PHP: Zend_Layout: где писать бизнес-логику?

В большинстве проектов я использую несколько скриптов.

Иногда мне нужны некоторые данные в моих макетах, которые зависят от макета, а не от страницы. Какой макет используется, хотя, это зависит от страницы.

Таким образом, начальной загрузкой или actioncontroller будут хорошие места для выбора макета. Но ИМХО, они не были бы хорошими местами для ввода данных, ожидаемых конкретным макетом.

Единственное другое место, о котором я могу подумать, - это просто написать некоторую бизнес-логику в самом макете viewscript. Хотя я бы тоже этого не делал:)

Где вы пишете свою бизнес-логику для конкретного макета?

- ОБНОВЛЕНИЕ:

бизнес-логика, ориентированная на макет;

  • имя пользователя вошедшего в систему пользователя
  • количество новых сообщений в почтовом ящике пользователя
  • случайный "ты знал..?" совет

1 ответ

Решение

Вещи, как это лучше всего сделать из ViewHelper

class ViewHelper_RandomTip
{
    public function randomTip()
    {
         $tip = TipsModel::getRandom();
         return "<div><h1>Random Tip</h1><p>$tip</p></div>");
    }
    // ...
}

Затем в вашем макете, используйте его с

echo $this->randomTip();

Обратите внимание, что это пример кода, который нигде не предназначен для запуска. Как именно вы получаете доступ к своей модели из Помощника и как вы возвращаете контент, полностью зависит от вас. Вам также нужно будет найти способ зарегистрировать ViewHelpers в макете. И будут люди, которые скажут вам, что вы не можете получить доступ к модели из вида (что неправильно)

Пожалуйста, также посмотрите эти связанные вопросы:

И посмотрите, как Zend Framework выполняет такую ​​работу, для получения дополнительной информации.

Другие вопросы по тегам