Zend框架模型中是否有任何beforeSave或afterSave方法?

时间:2018-07-23 17:02:13

标签: php zend-framework

Zend框架模型中是否存在beforeSave或afterSave方法?

class VendorReject extends Zend_Db_Table
{
    protected $_name = 'VendorRejects';
}

2 个答案:

答案 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;

    }
}