Переменные жидкости больше не читают дочерние значения. (TYPO3 9,5. *) - PullRequest
0 голосов
/ 27 марта 2019

Итак, у меня есть таблица, в которой перечислены некоторые встречи.Эти назначения относятся к событию.Цель здесь - составить список всех встреч и получить информацию о событии, к которому они относятся.

Пока все работает нормально, пока я не попытаюсь получить информацию о событии.Я получаю объект, который выглядит следующим образом:

enter image description here

Теперь, если я использую что-то вроде этого: {appointment.event.title} это вернет NULL.

Это означает, что он не имеет доступа к свойствам. В TYPO3 v8 он работает отлично, но не в TYPO3 v9.

Если я активирую <f:debug>{appointment}</f:debug> и получаю весь объект как отлаженный, то этот {appointment.event.title} работает!Я могу получить титул.

Вопрос теперь состоит в том, что изменилось со времени TYPO3 8 и больше не может получить доступ к этим свойствам и как я могу восстановить доступ?

Используется: TYPO3 v9

Режим: Composer

С уважением,

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Я нашел решение своей проблемы.

Благодаря @ Claus Due я посетил мою модель, чтобы узнать, есть ли здесь методы получения и установки. Они были там НО до моего геттера, присутствовал параметр @lazy. После того, как я удалил, все заработало как надо.

Спасибо!

1 голос
/ 27 марта 2019

Возможно, справедливо одно из следующего:

  1. Вы забыли добавить метод получения для свойства, к которому пытаетесь получить доступ, и путаете вывод f:debug с тем, что на самом деле получить из объекта.Отладочный ViewHelper выводит также защищенные свойства.
  2. Вы создали объект модели с __call или __get, поэтому на вас влияет https://github.com/TYPO3/Fluid/pull/438, который решен, но еще не выпущен (текущая версия Fluid2.6.0, патч будет включен в следующую версию).

Вы не говорите, какую версию TYPO3 вы используете, ни используете ли вы composer, поэтому трудно сказать, есть ли у вас версии Fluid.одинаковы - они должны быть, так как и TYPO3 v8, и TYPO3 v9 используют одну и ту же внешнюю библиотеку Fluid.

Решение в любом случае состоит в добавлении надлежащих методов получения в объект вашей модели домена и всегда помните, что выводиз f:debug не на 100% соответствует тому, к чему вы действительно можете получить доступ: f:debug, например, не будет показывать методы виртуального геттера, с которыми не связано свойство.

...