I need Quantity field to be filled with custom value when creating new product in admin. I have already tried modificators (haven't figured out how to set data for new product with modifyData($data) and 
this answer seems to be not working anymore.. Is there some way to do so?
Making an observer on event catalog_product_new_action and $observer->getEvent()->getProduct()->setQty(%number%) doesnt work either.
Cheers.
1 Answer 1
You can create your own modifier pool in your custom extension to achieve this. Following files would do the work.
etc/adminhtml/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
 <virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
 <arguments>
 <argument name="modifiers" xsi:type="array">
 <item name="defaultQtyModifier" xsi:type="array">
 <item name="class" xsi:type="string">Vendor\Module\Ui\DataProvider\Product\Form\Modifier\DefaultQtyModifier</item>
 <item name="sortOrder" xsi:type="number">200</item>
 </item>
 </argument>
 </arguments>
 </virtualType>
</config>
Ui/DataProvider/Product/Form/Modifier/DefaultQtyModifier.php
<?php
namespace Vendor\Module\Ui\DataProvider\Product\Form\Modifier;
use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier;
use Magento\Catalog\Model\Locator\LocatorInterface;
class DefaultQtyModifier extends AbstractModifier
{
 public function __construct(
 LocatorInterface $locator
 ) {
 $this->locator = $locator;
 }
 public function modifyData(array $data)
 {
 $model = $this->locator->getProduct();
 $modelId = $model->getId();
 if (!isset($data[$modelId][self::DATA_SOURCE_DEFAULT]['quantity_and_stock_status']['qty'])) {
 $data[$modelId][self::DATA_SOURCE_DEFAULT]['quantity_and_stock_status']['qty'] = 12;
 }
 return $data;
 }
 public function modifyMeta(array $meta)
 {
 return $meta;
 }
}
Here, instead of 12, you can defined your custom qty number.
Replace Vendor and Module with your original Vendor and Module name.
Hope this helps.
- 
 Thanks, it worked! I almost had it myself, but it wouldn't work until I moveddi.xmltoadminhtml/di.xmlVadim Shmyrov– Vadim Shmyrov2019年11月22日 06:33:19 +00:00Commented Nov 22, 2019 at 6:33
- 
 
Explore related questions
See similar questions with these tags.