Виртуальные свойства в моделях доменов TYPO3 extbase? - PullRequest
2 голосов
/ 18 апреля 2019

Я пытаюсь использовать свойство модели виртуального домена в TYPO3 9.5.x, у которого нет представления поля базы данных, но я не могу заставить его работать.

Моя модель выглядит так

class Project extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
   /**
     * participants
     *
     * @var string
     */
    protected $participants;

    ...

    /**
     * Returns the participants
     *
     * @return string $participants
     */
    public function getParticipants()
    {
        $this->participants = "foo";

        return $this->participants;
    }
}

Я вижу это свойство при отладке модели, но оно всегда null, как будто оно даже не распознает метод получения getParticipants().

Любая идея, что я мог быделать что-то не так?

Уже добавлено поле базы данных к ext_tables.sql и TCA, но, похоже, это не имеет значения.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Свойство равно null, потому что это состояние, когда отладчик Extbase проверяет его. Обратите внимание, что отладчик Extbase ничего не знает о геттерах, а также не вызывает их.

Так что, если вы хотите инициализировать свою собственность, вы должны сделать это во время объявления:

protected $participants = 'foo';
1 голос
/ 18 апреля 2019

Вы можете отладить это свойство, просто получив к нему доступ. В Fluid, если вы используете <f:debug>{myModel}</f:debug>, вы увидите NULL для вашей собственности.

Но если вы напрямую используете <f:debug>{myModel.participants}</f:debug>, вы увидите 'foo'.

...