Я поддерживаю расширение TYPO3, которое управляет внешними пользователями в бэкэнд. Поэтому я расширяю FrontendUserRepository своей собственной моделью. Мое расширение предоставляет CRUD-операции, и у меня есть проблема с обновлением пароля существующих лиц. Идея состоит только в том, чтобы обновить пароль, если поле пароля в форме редактирования заполнено, в противном случае (если оно осталось пустым), в базе данных останется прежнее значение пароля.Обновить модель домена, за исключением одного объекта в TYPO3 6.2
Теперь все работает отлично с TYPO3 4.5, но теперь после того, как я повышен до 6.2, пустая строка сохраняются в базу данных при отправке формы редактирования с пустым полем пароля ...
Это мой :
/**
* action update
*
* @param \My\Vendor\Domain\Model\Person $person
*
* @return void
*/
public function updateAction(\My\Vendor\Domain\Model\Person $person) {
// only hash and set password if not empty
if ($person->getPassword() == '') {
// if password was left empty, get current password from database
$oldPerson = $this->personRepository->findByUid($person->getUid());
$person->setPassword($oldPerson->getPassword()));
} else {
$person->setPassword(md5($person->getPassword()));
}
// save updated person to repository
$this->personRepository->update($person);
$this->flashMessageContainer->add('The person data was saved.');
$this->redirect('edit', NULL, NULL, array('person' => $person));
}
кто-нибудь знает, почему $oldPerson->getPassword()
не возвращает текущее значение для поля ввода пароля из базы данных? Или существует другой способ «пропустить» свойство модели домена при обновлении всех других свойств? Странно то, что он работал в TYPO3 4.5 ...
Спасибо за подробный ответ! Функция '_getCleanProperty()' работает – andreas