это может быть простая проблема, и я просто наблюдаю за этим.
Что я хочу сделать:
У меня есть модель, и я просто создаю ее экземпляр, заполняю ее данными, а затем использую функцию добавления ($ object) моего репозитория.
Затем я вызываю менеджер постоянства, чтобы сохранить мою запись.
Весь контроллер является частью внутреннего модуля.
Я должен сохранить Руководство по входу, потому что есть перенаправление @header из-за вызова 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();
}
Это чтобы дать представление о том, что я пытаюсь сделать.
Я немного ошеломлен этой проблемой. Нормальное поведение должно быть постоянным входом в базу данных. Может быть, это просто простая деталь.
та же проблема здесь! Отладка показывает, что функция 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 установлен и правильно, чтобы передать свойства в БД
Других решений пока нет …