刚开始使用第一个extbase扩展。在localconf中,我添加了以下操作:'list,new,show,create,edit'。
默认是“创建”重定向到没有参数的“列表”,并且在创建扩展后立即正常工作。
$this->redirect('list'); // <- this works if used
但是我没有重定向到“list”,而是想重定向到“show”来显示新添加的priceFormCalc。一位同事帮我用坚持做了这件事。
以下是代码,它的工作原理。但是,在网上阅读似乎不应该是坚持运行的最佳做法。在没有先手动持久化的情况下调用动作节目应该是可行的。
所以问题是:这是正确的方法吗,还是有更多“ext base”方式显示新创建的记录?
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));
}
要
答案 0 :(得分:3)
您可以保持当前状态,然后获取uid。注入配置管理器(TYPO3 6.x方式):
/**
* persistence manager
*
* @var \TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
* @inject
*/
protected $persistenceManager;
然后使用
$this->persistenceManager->persistAll();
应用所有更改。然后,您可以将对象(或仅uid)传递给操作。