Magento 1.6.1我试图在观察者身上获取表单数据。我试过了
$ observer-> getEvent() - > getForm();
它是空的。这是我的一些代码
<catalog_product_new_action>
<observers>
<namespace_module_save_product_stuff>
<type>singleton</type>
<class>Namespace_Module_Model_Observer</class>
<method>saveProductStuff</method>
</namespace_module_save_product_stuff>
</observers>
</catalog_product_new_action>
事件观察者触发,但我无法获取表单,只返回null。
public function saveProductStuff(Varien_Event_Observer $observer)
{
$roleId = implode('', Mage::getSingleton('admin/session')->getUser()->getRoles());
$roleName = Mage::getModel('admin/roles')->load($roleId)->getRoleName();
if($roleName != 'Administrators'){
try
{
$form = $observer->getEvent()->getForm();
var_dump($form);
} catch (Exception $e)
{
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
}
我真的需要在观察者身上得到这个表格,但没有发生任何事情,我一直在寻找教程,但所有这些都给你这种做事方法。
事件触发,我可以在其中做事但没有获得表格。
我需要获取表单,然后设置一个元素为禁用,如果它是某种类型的用户,我不能将其设置为锁定,因为该属性将不会保存。我想尝试这样的事情:
$form = $observer->getEvent()->getForm();//returns NULL
$element = $form->getElement('attribute_code');
$value = 'test';
$element->setValue($test);
$element->setDisabled(true);
但没有运气。我真的很感激任何帮助。
答案 0 :(得分:2)
不幸的是,有了这个事件,没有办法获得表格。以下是它的调用方式(app / code / core / Mage / Adminhtml / controllers / ProductController.php:192):
Mage::dispatchEvent('catalog_product_new_action', array('product' => $product));
根据您要执行的操作,您可能必须覆盖某些文件。请不要修改核心文件!现实情况是,如果你要保存某些东西,那就不是禁用控件的时候了。您希望在页面加载时执行此操作。
答案 1 :(得分:1)
我决定锁定属性
$product->lockAttribute('attribute_code');
关于新动作。然后添加第二个观察者来准备保存,解锁并保存属性。
$product = $observer->getEvent()->getProduct();
$product->unlockAttribute('attribute_code');
这就是诀窍。