我想建立一个创建表单的预览页面。在previewAction
中,我将记录的“已删除”属性设置为“1”,因为在BE中,列表模块用于批准插入的记录 - 因此如果记录永远不会最终保存,则无论如何它都会被删除。删除记录的Extbase属性映射
问题:我可以创建记录(deleted=1
) - 我可以跳回表单(无需回历史记录,因为我必须保留创建的对象)。但是,如果我再次提交属性映射告诉我
对象与标识类型为MyModel的“3”找不到。
当然是因为它被删除了。 Repository中用于忽略已删除的设置在这里没有采取措施。
是的,我可以通过手动填写了一切绕过Extbase魔法,但是这不是我想要的。
这里是行动得到一个想法是什么我想
/**
* action preview
*
* @param MyModel
* @return void
*/
public function previewAction(MyModel $newModel)
{
//check if model was already saved
$uid = $this->request->hasArgument('uid') ? this->request->getArgument('uid') : 0;
if($uid){
$newModel = $this->myRepository->findDeletedByUid($uid);
$this->myRepository->update($newModel);
}
else{
$newModel->setDeleted(true);
$this->myRepository->add($newModel);
}
$this->view->assign('ad', $newModel);
$this->persistenceManager->persistAll();
$uid = $this->persistenceManager->getIdentifierByObject($newModel);
$this->view->assign('uid', $uid);
}
任何想法?
这不起作用,因为动作参数previewAction(MyModel $ newModel)由属性映射器映射。属性映射器不使用存储库(我认为是这样)。 –
这实际上是一个非常好的主意 - 模型将用表单数据更新?那么这将是最好的方式。 –
然后,您应该能够更新存储库中的对象,是的。如果你想设置记录是否被删除,你还需要一个布尔属性,getter和setter在你的域模型中。再次更新我的答案。 – j4k3