Почему в TYPO3 нет модели страницы в Core?

Когда я использую основной PageRepository (TYPO3 \ CMS \ Frontend \ Page \ PageRepository), функцию getPage (), я получаю возвращаемый массив и не объект, как во многих других основных репозиториях. Затем мне нужно создать для себя какое-то «волшебство», чтобы вставить Категории или Автор страницы как Объекты для использования в шаблонах текучей среды. Вопрос в том, является ли отказ от модели страницы своего рода «дизайнерским решением»?


person Félix Martinez    schedule 16.01.2020    source источник


Ответы (3)


PageRepository не используется в контексте Extbase, поэтому здесь нет моделирования домена, потому что он также много используется в контексте backend и при выполнении ядра очень низкого уровня, где Extbase недоступен, иначе загрузка была бы слишком накладной. Extbase. Вы можете просто сопоставить таблицу страниц с вашей моделью и использовать правильное моделирование домена таким образом при использовании Extbase в своем расширении. Ядро не предоставляет модель домена Extbase для страниц, afaik.

person Euli    schedule 16.01.2020
comment
Вы можете просто сопоставить таблицу страниц с вашей моделью ..... Сколько полей мне нужно в TYPO3 9-10? Я предполагаю, что в любом случае нужно только создать модель предметной области и сопоставить MM-Relations ... как-нибудь? - person Félix Martinez; 16.01.2020
comment
Вы можете просто использовать TypoScript для сопоставления таблицы страниц. Какие поля вам нужны, решать вам. Отношения будут отображаться правильно, потому что для страниц уже существует конфигурация TCA - ›отношение категорий. - person Euli; 16.01.2020

Поставлять модель домена Extbase Page не имело бы большого смысла по разным причинам:

  1. Самому TYPO3 это не нужно.
  2. Модель должна быть чрезвычайно общей, поскольку она ничего не может знать о ваших требованиях к предметной области.
  3. Из-за этого модель будет слишком общей практически для любых требований домена, что, в свою очередь, потребует от вас добавления своей собственной Page модели домена.

И да, то же самое можно сказать о поставляемых FrontendUser и связанных с ними классах, и можно утверждать, что от них следует отказаться по тем же причинам.

person Mathias Brodala    schedule 16.01.2020
comment
1. Я не настолько глубоко разбираюсь в сути и верю вам на слово, все равно было бы неплохо какое-нибудь объяснение. - person Félix Martinez; 16.01.2020
comment
2. Я не думаю, что проблема в поставке общей модели, которая позволяет $ page- ›getCategories () или $ page-› getAuthor- ›getName () - person Félix Martinez; 16.01.2020

Вам не нужно будет создавать объект из массива для использования в Fluid.

Вы также можете просто передать массив представлению. Вы бы использовали обозначение . так же, как и с объектом.

Например. в контроллере:

$this->view->assign('page', $page);

Жидкость:

{page.title}
person Jonas Eberle    schedule 16.01.2020
comment
Спасибо, но я ищу page.categories [0] .pid или page.author.name - person Félix Martinez; 16.01.2020
comment
вы можете получить эти значения в контроллере и назначить представлению только те, которые вам нужны. - person Jonas Eberle; 16.01.2020