2013-08-06 1 views
1

У меня теперь есть несколько объектов, репозиториев и контроллеров в flow3, и они работают очень хорошо. Если кому-то нужна глобальная переменная жидкости (например, имя пользователя, напечатанное в макете по умолчанию), он должен определить и использовать глобальный контроллер.Flow3 - Как инициализировать и использовать глобальный контроллер?

Как создать и использовать такие контроллеры?

+0

Зачем вам нужен глобальный контроллер, чтобы показать имя пользователя ? Не могли бы вы дать более подробную информацию? На самом деле у вас будут полевые пользователи в вашей модели, сопоставленные с таблицей пользователей. Оттуда у вас есть доступ ко всем пользователям и их именам. – Wipster

+0

Да, это правильно, но вам также нужно получить Пользователя в каждом отдельном контроллере. И я не хочу этого делать для каждого контроллера. Поэтому мне нужен контроллер, который всегда называется. – Pete

+0

Моя вина! Не видел тег потока. Удалил мой ответ. – Wipster

ответ

2

Контроллеры являются классами, поэтому вы можете расширить их и создать абстрактные.

Предположим, у вас есть LoveController в My.Relationships упаковке. Вы можете создать отдельный базовый пакет, то есть My.Life с AbstractLifeController внутри (php: abstract class AbstractLifeController extends \TYPO3\Flow\Mvc\Controller\ActionController).

Теперь есть методы initialize* (где * может быть Action, View, AnyAction и т. Д.). В вашем случае использования: protected initializeView(\TYPO3\Flow\Mvc\View\ViewInterface $view) в этом Abstarct контролере и присвоить некоторые переменные, т.е. $view->assign('myName', $myName); ...

Тогда, когда ваш LoveController extends \My\Life\Controller\AbstractLifeController, что переменная {myName} будет видна в жидкости для шаблонов, используемых своими действиями.

Таким образом, вместо расширения \ TYPO3 \ Flow \ Mvc \ Controller \ ActionController для всех контроллеров, просто расширить эту абстрактную \ My \ Life \ Controller \ AbstractLifeController