首页>Magento>source

我的具体用例是我想在创建产品后的30天内设置news_from_date和news_to_date.我希望这样做,所以当用户进入管理区域创建产品时,这个字段将自动填充这些值,如果他们愿意,他们可以删除它们.

我看过这篇文章(将默认值设置为news_from_date和news_to_date)和这一个(从保存事件观察者获取产品 - Magento 2)帮助我在保存前设置默认值,但它无法自动填写管理界面中的值

我在Magento 1中创建了一个完全符合我想要的模块,但我无法在Magento 2中使用同样的东西。

以下是我正在使用的代码:

/etc/adminhtml/events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="catalog_product_new_action">
        <observer name="new_product_observer" instance="CrazyDog\NewProducts\Observer\Product" />
    </event>
</config>

/observer/Product.php

class Product implements \Magento\Framework\Event\ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();
        $new_from_date = date('Y-m-d'); // --- Today
        $product->setNewsFromDate($new_from_date);
        $new_to_date = date('Y-m-d', strtotime('+30 days')); // --- 30 days from now
        $product->setNewsToDate($new_to_date);
        // --- These print in the admin area with correct values, so I know the observer is running
        echo $product->getNewsFromDate();
        echo $product->getNewsToDate();
    }
}

我无法弄清楚为什么这些值没有填充到字段中.我已尝试使用其他属性,如名称,并且在尝试调试时会print,但它们不会填充到字段中.我不确定这是否与javascript现在如何在后端用于很多这样的东西有关.

任何见解都会有所帮助,谢谢! :)

最新回答
  • 2019-12-5
    1 #

    我认为您的日期格式是错误的,您应该尝试

    $new_from_date = date('m/d/Y'); // --- Today
    

  • 以编程方式创建简单产品
  • magento2:Magento 2在管理员后端获取有关保存客户按钮的客户旧数据和新数据