簡體   English   中英

TYPO3 extbase-獲取非持久對象的“ uid”

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM