Zend框架模型中是否存在beforeSave或afterSave方法?
class VendorReject extends Zend_Db_Table
{
protected $_name = 'VendorRejects';
}
答案 0 :(得分:2)
您可以覆盖Zend_Db_Table_Row_Abstract的_insert()
和_postInsert()
方法。
因此,创建行类,例如:
class Row_VendorReject extends Zend_Db_Table_Row
{
protected function _insert()
{
$rejectionDate = $this->rejection_date;
// do something here
parent::_insert();
}
protected function _postInsert()
{
parent::_postInsert();
// some postprocessing
}
}
然后用新的类名填充模型中的_rowClass
字段:
class VendorReject extends Zend_Db_Table
{
protected $_name = 'VendorRejects';
protected $_rowClass = 'Row_VendorReject';
}
现在,每次在行上调用save()
时,这些方法也会被调用(在插入/更新之前和之后)。
如果您需要具有更新功能的此类功能,则还有_update()
和_postUpdate()
方法。
答案 1 :(得分:0)
另一种简便的方法是覆盖模型的插入/更新方法。
在保存示例代码之前:
class VendorReject extends Zend_Db_Table
{
protected $_name = 'VendorRejects';
// Override parent method
public function insert(array $data)
{
// Add your code here that will execute before insert operation
return parent::insert($data);
}
}
保存示例代码后:
class VendorReject extends Zend_Db_Table
{
protected $_name = 'VendorRejects';
// Override parent method
public function insert(array $data)
{
parent::insert($data);
// Add your code here that will execute after insert operation
return;
}
}