Php 对Extbase中已删除的ModelInstance执行deleteAction失败
例如,删除链接被单击两次或来自不同的用户。虽然第一次单击将正确删除我的对象,但在调用我的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
/**
* 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操作。当用户单击该链接时,ExtBasePropertyMapper
使用随链接发送的参数在数据库中定位uploadObjectToDelete
,将其交给控制器和删除操作
第一次单击后,该删除操作将成功地从数据库中删除该对象,并且当您重定向到列表操作时,页面将重新加载。但是,这次uploadObjectToDelete
对象为空。因此,对于第二次单击,当PropertyMapper
尝试查找delete操作的upload
参数时,没有要查找的对象。由于upload
参数是必需的(即不能为null
),因此会出现异常
选项1
更改列表操作,使其在uploadObjectToDelete
对象为null
时不显示这些链接。这可能是最好的选择
...
选项2
将删除操作更改为接受null
参数:
公共函数deleteAction(Tx_MyExt_Domain_Model_Upload$Upload=null){。。。
但是这个选项没有意义。为什么允许用户尝试删除一个已经为空的对象
这些只是建议。失败是什么意思?引发了异常吗?是否有错误消息?请原谅我回答得太晚,但我在上面的问题中对其进行了细化。啊,太好了,选项2帮我解决了问题。当用户打开了一个过时的页面,例如另一个选项卡时,可能会出现问题。用户成功销毁了对象完全在一个选项卡中,但另一个选项卡仍然有删除链接。我只是不想在前端出现异常。非常感谢!