ZF: расширить модули indexController или запустить init () в indexController - PullRequest
0 голосов
/ 29 сентября 2010

Я думал о расширении всех моих контроллеров из indexController. В контроллере индекса есть функция init (), которая выполняет много всего. Это не выполняется по запросу fooController.

У меня уже есть зарегистрированный плагин viewSetup. И это выполняется на все запросы, и это просто отлично.

Моя проблема в том, что у меня есть модуль блога, который должен делать кое-что, что не нужно делать в модуле новостей.

Хорошим примером является мое вторичное меню, специфичное для активного модуля.

class fooController extends indexController Таким образом, я мог бы также переопределить функцию init () в indexController из fooController. К сожалению, автозагрузчик не может найти класс indexController.

Следующее работает, хотя, если мне сначала нужен файл indexController.php

<?php
require_once('indexController.php);

class fooController extends indexController {

    function init() {
        parent::init();

        // Do changes to, ie. setup controller specific menu, or add menu items.
    }
}

Идеи высоко ценится:)

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Это похоже на случай action helper . Вы можете упаковать общие функции в такого помощника и вызывать его для каждого контроллера (в методе init()) или для каждого действия.

0 голосов
/ 29 сентября 2010

Возможные решения, зависит от того, что вы хотите сделать:

  • пользовательский абстрактный класс контроллера
  • метод начальной загрузки _init
  • action helper
  • методы перегрузки
  • Плагин контроллера

Похоже, что плагин контроллера является лучшим в этом случае (так как вы уже используете его), но вам просто нужно добавить некоторые условия, например, выполнять код только в том случае, если для конкретного модуля, контроллера и действия запрашивается .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...