2014-09-27 4 views
0

Это может быть простая проблема, и я просто наблюдаю за ней.TYPO3 6.2 Extbase: Persisted Object still Modified

Что я хочу сделать:

У меня есть модель, и я просто создать экземпляр этого, заполнить его с данными, а затем использовать надстройку ($ объекта) функции моего Repository. Затем я вызываю persistenceManager, чтобы сохранить свою запись.

Весь контроллер является частью бэкэнд-модуля.

Мне нужно сохранить запись вручную, потому что есть перенаправление @header из-за вызова API SSO, который перенаправляет меня обратно.

Что такое проблема:

Мои отлаживает намекают, что после добавления значения к объекту Propertys заполнены на объект правильно. После вызова функции 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(); 
} 

Это должно дать представление о том, что я пытаюсь сделать.

Я немного ошеломлен этой проблемой. Нормальным поведением должно быть запись с сохраненной базой данных. Возможно, это просто простая деталь.

+0

Могли бы вы вставить соответствующую ТСА? Как сказал RoyalKnight: Обычно возникает проблема с TCA, если вы получаете пустые данные в своей базе данных. – pduersteler

ответ

1

такой же проблема здесь! Отладка показывает, что функция persistObject, называемая функцией $ dataMap-> isPersistableProperty ($ propertyName), перед передачей данных в БД.

эта функция нуждается в 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 Исеть и правильно передать свойства БД

Смежные вопросы