[英]Observer event is not working before save in custom module magento
我已經在管理面板中創建了一個自定義模塊。 在將表單數據保存到表中之前,我想使用觀察器執行小的concat操作。但是在保存之前,它運行良好。
我的config.xml文件:
<events>
<demo_save_before>
<observers>
<blazedream_demo_save_observer>
<type>singleton</type>
<class>demo/observer</class>
<method>demo_save_before</method>
</blazedream_demo_save_observer>
</observers>
</demo_save_before>
</events>
我的模型文件:Observer.php
<?php
class Blazedream_Demo_Model_Observer
{
public function demo_save_before($observer){
$demo = $observer->getEvent();
$demo->setContent(Mage::app()->getRequest()->getPost("title")." ".Mage::app()->getRequest()->getPost("content"));
}
}
我在控制器中的調度程序代碼:
public function saveAction()
{
$event_data_array = array('content' => Mage::app()->getRequest()->getParam('content'));
$varien_object = new Varien_Object($event_data_array);
Mage::dispatchEvent('demo_save_before', array('varien_obj'=>$varien_object));
//echo $varien_object->getDemo_id();
$date = date('Y-m-d H:i:s');
if ( $this->getRequest()->getPost() ) {
try {
$postData = $this->getRequest()->getPost();
$demoModel = Mage::getModel('demo/demo');
$demoModel->setId($this->getRequest()->getParam('id'))
->setTitle($postData['title'])
->setContent($postData['content'])
->setStatus($postData['status'])
->setCreated_time($date)
->setUpdate_time($date)
->save();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully saved'));
Mage::getSingleton('adminhtml/session')->setDemoData(false);
$this->_redirect('*/*/');
return;
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setDemoData($this->getRequest()->getPost());
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
}
}
$this->_redirect('*/*/');
}
任何人都可以幫助找到問題。 提前致謝。
在要觀察的自定義模型中,確保覆蓋了屬性:
protected $_eventPrefix = 'demo';
調度事件正在執行:
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
如果未設置,將無法正常工作。
也可能存在您覆蓋_beforeSave而沒有調用的問題
parent::_beforeSave()
在里面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.