簡體   English   中英

TYPO3 6.2 Extbase:持久對象仍被修改

[英]TYPO3 6.2 Extbase: Persisted Object still Modified

這可能是一個簡單的問題,我只是對其進行監督。

我想做什么:

我有一個模型,我只是創建它的一個實例,用數據填充它,然后使用我的存儲庫的add($ object)函數。 然后,我調用persistenceManager來保存我的條目。

整個控制器是后端模塊的一部分。

我必須堅持輸入手冊,因為有一個@header重定向,這是因為SSO API調用之后將我重定向回去。

問題是什么:

我的調試提示,在將值添加到對象后,屬性正確填充到了對象。 調用persistAll函數后,我的對象被保留,但是值顯示為“修改”。

結果是:

我的表中有一個空對象。

時間一些代碼(縮短)

/**
 * myObjectRepository
 *
 * @var \MyVendor\MyExt\Domain\Repository\MyObjectRepository
 * @inject
 */
protected $myObjectRepository;

/**
 * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
 * @inject
 */
protected $objectManager;

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

/**
 * action verify
 *
 * @return void
 */
public function verifyAction() {
    $myObject = $this->objectManager->get('\\MyVendor\\MyExt\\Domain\\Model\\MyObject');
    $myObject->setName('Nice Name');
    $myObject->setAge(20);

    $this->myObjectRepository->add($myObject);
    $this->persistenceManager->persistAll();
}

這是給我一個嘗試做的想法。

這個問題讓我有些震驚。 正常的行為應該是一個持久數據庫條目。 也許只是監督一個簡單的細節。

同樣的問題在這里! 調試顯示,在將數據傳遞給DB之前,名為$ dataMap-> isPersistableProperty($ propertyName)函數的persistentObject函數。

此功能需要TCA

/**
 * Returns TRUE if the property is persistable (configured in $TCA)
 *
 * @param string $propertyName The property name
 * @return boolean TRUE if the property is persistable (configured in $TCA)
 */
public function isPersistableProperty($propertyName) {
    return isset($this->columnMaps[$propertyName]);
}

因此,請確保已設置您的TCA並正確將屬性傳遞給數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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