0
我試圖在任務doctrine:generate-admin
生成的模塊中向update
和delete
操作添加一些額外的邏輯。我讀了here,看到我可以在/application/mymodule/actions/actions.class.php
中創建executeUpdate()
和executeDelete()
方法。因爲executeUpdate()
調用proccessForm()
方法,那麼我認爲最好的是覆蓋這個而不是executeUpdate()
,但不知道如何。我需要添加的代碼是這樣的:如何覆蓋管理髮生器中的processForm()
$q = Doctrine_Core::getTable('SdrivingEmpresa')
->createQuery('a')
->where('idempresa = ?', $request->getParameter('idempresa'))
->execute();
$file = new sfFilesystem();
$file->remove(sfConfig::get('sf_upload_dir') . '/' . $q[0]->getLogotipo());
我這樣做是爲executeDelete()
通過複製產生的高速緩存編碼,寫我的邏輯見下圖:
public function executeDelete(sfWebRequest $request) {
$request->checkCSRFProtection();
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object', array('object' => $this->getRoute()->getObject())));
$q = Doctrine_Core::getTable('SdrivingEmpresa')
->createQuery('a')
->where('idempresa = ?', $request->getParameter('idempresa'))
->execute();
$file = new sfFilesystem();
$file->remove(sfConfig::get('sf_upload_dir') . '/' . $q[0]->getLogotipo());
if ($this->getRoute()->getObject()->delete()) {
$this->getUser()->setFlash('notice', 'The item was deleted successfully.');
}
$this->redirect('@sdriving_empresa');
}
但我艱難的,這是不對的,所以我的問題是,我應該這樣做與processForm()或存在一個更好的方式來做到這一點?任何建議或幫助?
您應該使用模型對象上可用的生命週期事件。你可以添加像preDelete,postDelete,preUpdate,postUpdate,preSave,postSave,preInsert,postInsert這樣的函數。你可以添加任何應該與給定事件關聯的邏輯。 –