2

刚开始使用第一个 extbase 扩展。在 localconf 中,我添加了以下操作:“列表、新建、显示、创建、编辑”。

默认是“创建”重定向到没有参数的“列表”,并且在创建扩展后就可以正常工作。

$this->redirect('list'); // <- this works if used

但我不想重定向到“列表”,而是重定向到“显示”以显示新添加的 priceFormCalc。一位同事帮助我使用坚持来完成此任务。

下面是代码,它可以工作。但是在网上阅读似乎坚持运行不应该是最佳实践。在不先手动持久化的情况下调用动作秀应该是可行的。

所以问题是:这是正确的方法吗,还是有更“扩展基础”的方式来显示新创建的记录?

public function createAction(\TYPO3\OgNovomatrixpricecalc\Domain\Model\PriceCalcForm $newPriceCalcForm) {
    $this->priceCalcFormRepository->add($newPriceCalcForm);
    $this->flashMessageContainer->add('Your new PriceCalcForm was created.');

    // workaround - or the right way?
    $persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('Tx_Extbase_Persistence_Manager');
    $persistenceManager->persistAll(); // <- save i database
    $uid = $newPriceCalcForm->getUid(); // <- get UID of newly saved record

    // do redirect using uid of newly created priceCalcForm
    $this->redirect('show',Null,Null, array('priceCalcForm' => $uid));
}

4

1 回答 1

3

您可以保留当前状态,然后获取 uid。注入配置管理器(TYPO3 6.x方式):

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

然后使用

$this->persistenceManager->persistAll();

应用所有更改。然后您可以将您的对象(或仅 uid)传递给操作。

于 2013-10-25T12:58:50.460 回答