gpt4 book ai didi

TYPO3 extbase - 获取非持久对象的 "uid"

转载 作者:行者123 更新时间:2023-12-04 04:36:57 29 4
gpt4 key购买 nike

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

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

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

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

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

所以问题是:这是正确的方法吗,还是有更多的“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));
}

最佳答案

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

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

然后使用
$this->persistenceManager->persistAll();

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

关于TYPO3 extbase - 获取非持久对象的 "uid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19588474/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com