Проблема заключается в PropertyMapping. Если extbase попытается назначить uid (12345) объекту домена (tt_news), значение параметра setEnableFields в репозитории не соблюдается. Таким образом, вы должны сами получить объект.
Простым решением является сделать это при инициализации * Действие для каждого действия «показать». Для editAction пример:
public function initializeEditAction() {
if ($this->request->hasArgument('news')) {
$newsUid = $this->request->getArgument('news');
if (!$this->newsRepository->findByUid($newsUid)) {
$defaultQuerySettings = $this->newsRepository->createQuery()->getQuerySettings();
$defaultQuerySettings->setIgnoreEnableFields(TRUE);
$this->newsRepository->setDefaultQuerySettings($defaultQuerySettings);
if ($news = $this->newsRepository->findByUid($newsUid)) {
$this->request->setArgument('news', $news);
}
}
}
}
Жесткая часть предназначена для того, чтобы объект обновлялся. Как я никогда не пытаюсь это я нашел TypeConverter для извлечения и скрытых записей в https://gist.github.com/helhum/58a406fbb846b56a8b50
Может быть, вместо того, чтобы зарегистрировать TypeConverter для всего (как пример в ext_localconf.php
) вы можете попытаться назначить его только в initializeUpdateAction
public function initializeUpdateAction() {
if ($this->arguments->hasArgument('news')) {
$this->arguments->getArgument('news')->getPropertyMappingConfiguration()
->setTypeConverter('MyVendor\\MyExtension\\Property\\TypeConverters\\MyPersistenObjectConverter')
}
}
Первое решение будет работать, но в updateAction мы должны получить newsUid с помощью $ this-> request-> getArgument ('news') ['__ identity']. Nest Я проведу решение TypeConverter. Благодаря! –
И TypeCpnverter на https://gist.github.com/helhum/58a406fbb846b56a8b50 также отлично подойдет для меня! –