[英]TYPO3 extbase - get “uid” of non persisted object
刚开始使用第一个extbase扩展。 在localconf中,我添加了以下操作:“列出,新建,显示,创建,编辑”。
默认为“创建”重定向到“列表”,不带任何参数,并且在创建扩展名后立即运行良好。
$this->redirect('list'); // <- this works if used
但是,我不想重定向到“列表”,而是重定向到“显示”以显示新添加的priceFormCalc。 一位同事帮助我使用persist来完成此任务。
下面是代码,它可以工作。 但是,在网上阅读看来,坚持下去不是最佳实践。 无需先手动坚持就可以调用动作表演。
因此,问题是:这是正确的方法吗?还是显示新创建的记录的更“扩展基础”方法?
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));
}
至
您可以保留当前状态,然后获取uid。 注入配置管理器(以TYPO3 6.x方式):
/**
* persistence manager
*
* @var \TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
* @inject
*/
protected $persistenceManager;
然后使用
$this->persistenceManager->persistAll();
应用所有更改。 然后,您可以将对象(或仅uid)传递给操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.