Поведение кэша TYPO3 с обновленными моделями

У меня такое странное поведение с Typo3 6.2 LTS. В моем расширении у меня есть модель со свойством FileReference. Это свойство имеет vaule != 0. Это значение существует в таблице sys_file_reference.

Не происходит странной магии. Если я попытаюсь получить доступ к этому файлу, я получу только nullvalue вместо FileReference-/FileObject.

Мы уже очистили наш кеш (сервер и браузер), но ничего. Это все еще null.

Я ценю любую помощь!

Грец, Паддалс


person PaddaelsM    schedule 06.07.2017    source источник
comment
После изменения файла модели расширения вам необходимо после того, как расширение будет удалено/установлено, и очистить весь кеш в инструментах установки.   -  person Pravin Vavadiya    schedule 06.07.2017
comment
Хорошо, я удалил и установил расширение. Во время этого процесса я очистил весь кеш... и он все еще не работает :/   -  person PaddaelsM    schedule 06.07.2017


Ответы (1)


Я помню, что всегда было трудно установить связь 1:1 между моделью предметной области и FileReference. Я предлагаю вам использовать существующие шаблоны и работать с ObjectStorage для этой цели.

Вы можете скопировать необходимый TCA из существующего tca таблицы tt_content (например, изображение поля). Аннотация свойства должна выглядеть так:

/**
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Extension\Domain\Model\FileReference>
 * @lazy
 * @cascade remove
 */
 protected $propName;

Конечно, вы должны создать модель FileReference в своем собственном пространстве имен. Но вы можете расширить базовую модель Extbase, поэтому вам не нужно писать какие-либо методы.

Чтобы сопоставить вашу модель с таблицей sys_file_reference, вы должны добавить некоторый типографский текст.

Для этого создайте ext_typoscript_setup.txt в папке расширений и вставьте следующий код (настройте пространство имен и имя модели)

config.tx_extbase.persistence.classes {
    Vendor\Extension\Domain\Model\FileReference.mapping {
        tableName = sys_file_reference
    }
}

После очистки кешей в инструменте установки (и, конечно, переноса базы данных) он должен работать.

Пояснения:

@lazy: Typo3 не будет извлекать все ссылки сразу, только при доступе к свойству.

@cascade remove: Extbase удалит все записи sys_file_reference, относящиеся к вашей модели домена, после удаления модели.

person Philipp Wrann    schedule 06.07.2017
comment
Итак, вы пытаетесь сказать мне, что я должен использовать отношение 1:n вместо 1:1? - person PaddaelsM; 07.07.2017
comment
Хм... Я прочитал несколько статей и наткнулся на кое-что интересное. array( 'maxitems' => 6, 'foreign_match_fields' => array( 'fieldname' => 'image', 'tablenames' => 'tx_ext_domain_model_person', 'table_local' => 'sys_file', ), ), Это фрагмент, который я мог получить с сайта typo3tiger. de/blog/post/ В моем файле конфигурации TCA есть следующее: array('maxitems' => 1), Я знаю, что у меня отношение 1:1 вместо отношения 1:n. Но разве в моем файле TCA не должно быть чего-то подобного?! - person PaddaelsM; 10.07.2017