如何在admin-generator中覆盖processForm()

时间:2013-07-01 20:13:30

标签: symfony1 symfony-1.4

我正在尝试在任务update生成的模块中为deletedoctrine:generate-admin操作添加一些额外的逻辑。我看了here,看到我可以在executeUpdate()中创建executeDelete()/application/mymodule/actions/actions.class.php方法。由于executeUpdate()调用proccessForm()方法,我认为最好是覆盖此而不是executeUpdate(),但不知道如何。我需要添加的代码是:

$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()做同样的事情还是存在更好的方法来做到这一点?任何建议或帮助?

1 个答案:

答案 0 :(得分:0)

您可以复制管理模块操作中应用程序缓存中生成的proccessForm()以覆盖它。