2010-08-05 64 views
0

我想测试一个对象是否在调用我的函数executeDelete后被删除,以便在对象仍然在我的数据库中时向用户发送错误。symfony 1.4:问题方法isDeleted()

if ($logement->isDeleted()) { 
    $this->getUser()->setFlash('notice', 'Suppression du logement effectuée'); 
} 
else { 
    $this->getUser()->setFlash('error', 'Erreur lors de la suppression du logement'); 
} 

但我有一个错误:

Unknown method Logement::isDeleted 

我没有找到如何使用这个方法,我认为这是我的问题。

回答

1

您可能需要向我们展示更多代码......但基本上您的方法不存在,您将不得不创建它。

我假设你在使用Doctrine。假设您正在删除记录,如下所示:

$lodgement->delete(); 

不是delete方法返回一个布尔值来指示成功/失败吗?所以,你可以简单地做到以下几点:

if ($lodgement->delete()) { 
    $this->getUser()->setFlash('notice', 'success'); 
} else { 
    $this->getUser()->setFlash('error', 'failure'); 
} 

编辑

如果你想实现一个isDeleted()方法,你可以使用postDelete()挂钩。在你的模型类:

class Lodgement extends BaseLodgement 
{ 
    // add an 'isDeleted' property 
    protected $isDeleted = false; 

    // override the postDelete method 
    public function postDelete($values) 
    { 
     $this->isDeleted = true; 
    } 

    // define your own isDeleted method 
    public function isDeleted() 
    { 
     return $this->isDeleted;  
    } 
} 

然后,你可以这样做:

$lodgement->delete(); 
echo $lodgement->isDeleted() ? 'notice' : 'error'; 
+0

好吧,我已经展示了一本关于行走方法,如请将isDeleted和isModified网站,我thounght这是同样的事情主义。 我也显示了一些关于isDeleted on Jobeet: http://www.symfony-project.org/book/1_0/08-Inside-the-Model-Layer 我想知道是否有一种方法知道更新是否正常工作? – Elorfin 2010-08-06 07:07:21

+0

确实..在Propel中有一个isDeleted()方法! 要检查记录是否被修改,可以使用state()方法检查对象的状态。它返回一个像STATE_CLEAN,STATE_DIRTY等定义的常量。 http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_record.html#STATE_CLEAN 至于检查更新,保存( )不会返回值,它只会在失败时引发异常,但您可以使用trySave(),它根据结果返回一个布尔值... 同样,如果您想实现,还有一个postUpdate()挂钩一些你自己的逻辑:) – 2010-08-06 09:06:25