Контроллер внутри контроллера ... возможно я ошибаюсь - PullRequest
1 голос
/ 26 мая 2011

У меня "стандартный" макет страницы.

Верхний колонтитул, нижний колонтитул, основной блок содержимого с левой стороны и боковая панель с правой стороны.

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

Я не хочу копировать этот код на каждом из моих контроллеров.

Как мне создать контроллер, который будет строить боковую панель, загружать представление и все, что я смогу затем «включить» (как я бы включил представление) в страницу.

Я могу предвидеть создание sidebar класса / объекта, который я мог бы создать и как бы "добавить к представлению".

Как мне это сделать?

Спасибо

Ответы [ 3 ]

0 голосов
/ 26 мая 2011

Когда в прошлом у меня была такая проблема с Codeigniter, я создал хук, который загружает post_controller_constructor, выполняет некоторую логику и затем загружает представление sidebar.php.Это довольно просто и не требует особых усилий.

Единственная проблема заключается в том, что если вы не используете шаблонизацию, это может привести к нарушению порядка, в котором вы вызываете представления.Например, если вы привыкли:

public function index()
{
    $this->load->view("header.php");
    $this->load->view("my_awesome_page.php", $this->data);
    $this->load->view("footer.php");
}

Тогда вам придется изменить его, чтобы знать, что боковая панель будет последней вызываемой вещью, и поместить туда нижний колонтитул.Обычно мне нужно, чтобы Hook проверил объект CI на наличие переменной, чтобы увидеть, требуется ли боковая панель, а затем, если не просто выплюнуть footer.php.

Я довольно уверен hooks это то, что вы ищете.

0 голосов
/ 15 сентября 2011

В конце концов я создал библиотеку, которая делала то, что мне было нужно.Это хорошо работает.Библиотеки могут быть эффективно сделаны как простые контроллеры и включены в них где угодно.:)

0 голосов
/ 26 мая 2011

Похоже, Modular Extensions-HMVC может быть хорошим решением для вас. Вики, на которые я ссылаюсь, содержат примеры.

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