Php 对Extbase中已删除的ModelInstance执行deleteAction失败

Php 对Extbase中已删除的ModelInstance执行deleteAction失败,php,extbase,Php,Extbase,例如,删除链接被单击两次或来自不同的用户。虽然第一次单击将正确删除我的对象,但在调用我的deleteAction之前,第二次单击将失败(因为它已过时)。我怎样才能防止这种情况 /** * action delete * * @param $upload * @dontvalidate $upload * @return void */ public function deleteAction(Tx_MyExt_Domain_Model_Upload $upload) { $t

例如,删除链接被单击两次或来自不同的用户。虽然第一次单击将正确删除我的对象,但在调用我的deleteAction之前,第二次单击将失败(因为它已过时)。我怎样才能防止这种情况

/**
 * action delete
 *
 * @param $upload
 * @dontvalidate $upload
 * @return void
 */
public function deleteAction(Tx_MyExt_Domain_Model_Upload $upload) {
    $this->uploadRepository->remove($upload);
    $this->flashMessageContainer->add('Your Upload was removed.');
    $this->redirect('list');
}
我得到一个例外:

该值的类型必须为“Tx\u MyExt\u Domain\u Model\u Download”,但类型为“NULL”


在操作内部执行某些操作没有帮助,因为它在…之前失败。

我假设您有一些流动的标记,看起来像:

。。。
这表示:当用户单击此链接时,将
uploadObjectToDelete
对象传递给delete操作。当用户单击该链接时,ExtBase
PropertyMapper
使用随链接发送的参数在数据库中定位
uploadObjectToDelete
,将其交给控制器和删除操作

第一次单击后,该删除操作将成功地从数据库中删除该对象,并且当您重定向到列表操作时,页面将重新加载。但是,这次
uploadObjectToDelete
对象为空。因此,对于第二次单击,当
PropertyMapper
尝试查找delete操作的
upload
参数时,没有要查找的对象。由于
upload
参数是必需的(即不能为
null
),因此会出现异常

选项1

更改列表操作,使其在
uploadObjectToDelete
对象为
null
时不显示这些链接。这可能是最好的选择


... 
选项2

将删除操作更改为接受
null
参数:

公共函数deleteAction(Tx_MyExt_Domain_Model_Upload$Upload=null){。。。
但是这个选项没有意义。为什么允许用户尝试删除一个已经为空的对象


这些只是建议。

失败是什么意思?引发了异常吗?是否有错误消息?请原谅我回答得太晚,但我在上面的问题中对其进行了细化。啊,太好了,选项2帮我解决了问题。当用户打开了一个过时的页面,例如另一个选项卡时,可能会出现问题。用户成功销毁了对象完全在一个选项卡中,但另一个选项卡仍然有删除链接。我只是不想在前端出现异常。非常感谢!