[英]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.