typo3后端扩展的createAction不会保留数据

时间:2017-10-05 13:03:04

标签: php typo3 typo3-6.2.x typo3-7.6.x

我正在从typo3 6.2.31到7.6.23的迁移过程

我有以下功能:

Chef::HTTP

它说一切正常,但它不会持久存在数据。可能是什么问题?

当我手动将记录添加到数据库时,它也没有显示:(

更新Var_dump enter image description here

2 个答案:

答案 0 :(得分:2)

编辑: 我撤回我在这里说的所有内容。 @ paul-beck是对的,在createAction实际上保留创建的对象之后重定向。我确定它并不总是那样,并且在文档引入时无法找到。我将此答案作为参考。

AbstractController在您的操作返回时接管,会自动执行持久化操作。这发生在createActions和updateActions之后。但是你的重定向可以防止这种情况发生。

,只需在重定向之前通过调用persistall手动合并持久化,你就可以了。

$this->persistenceManager->persistAll();
$this->redirect('list');

您需要PersistenceManager的实例。

/**
 * @var \TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
 * @inject
 */
protected $persistenceManager;

答案 1 :(得分:2)

经过一些TeamViewer调查后,我们发现问题出在模型和TCA中。

模型具有属性protected $uid = ''。当然,UID不能是字符串,不应该声明为此字符串。但是,createAction中的调试表示该对象是一个"持久化实体"所以持久性经理认为没有什么可做的。从模型中删除$ uid并更新到TCA以成为7 LTS兼容后,问题就解决了。

我认为将$ uid声明为模型中的整数并不是一个问题,但作为一个字符串,它对系统来说太过分了。令人惊讶的是,这适用于TYPO3 6 LTS ...