Контроллеры Expression Engine
Я создаю свой первый сайт в Expression Engine, мне было интересно, как использовать пользовательские контроллеры в EE, как в Codeigniter, или каков EE-эквивалент?
3 ответа
Контроллеры - это сердце вашего приложения, так как они определяют, как должны обрабатываться HTTP-запросы.
Как вы, вероятно, знаете, контроллер CodeIgniter - это просто файл класса, который назван так, что может быть связан с URI.
<?php
class Blog extends CI_Controller {
public function index() {
echo 'Hello World!';
}
}
?>
Эквивалентом ExpressionEngine являются группы шаблонов и шаблоны, управление которыми осуществляется из диспетчера шаблонов панели управления.
Поскольку группы шаблонов и шаблоны EE могут называться как угодно, структура URL неудивительно слабо имитирует приложение CodeIgniter - в конце концов, EE построен на CI.
Например, рассмотрим этот URI: example.com/index.php/blog
- CodeIgniter попытается найти контроллер с именем
blog.php
и загрузить его. - ExpressionEngine попытается найти группу шаблонов с именем
blog
и загрузите шаблон с именемindex
,
Продолжая этот пример, второй сегмент URI определяет, какая функция в контроллере вызывается (для CodeIgniter) или какой шаблон загружается (для ExpressionEngine).
Создание из того же URI: example.com/index.php/blog/entry
- CodeIgniter попытается найти контроллер с именем
blog.php
и загрузить его. - ExpressionEngine попытается найти группу шаблонов с именем
blog
и загрузите шаблон с именемentry
,
Начиная с третьего и последующего сегментов URL, CodeIgniter и ExpressionEngine начинают использовать разные подходы. (Полное объяснение их различий выходит за рамки этого ответа).
Хотя CodeIgniter и ExpressionEngine имеют много общего, на очень низком уровне CodeIgniter позволяет создавать веб-приложения, а ExpressionEngine - веб-сайты.
Я знаю, что это старо, но я просто подумал, что кто-то, глядя на это, может найти полезный ответ. Как уже говорили другие, маршруты для контроллеров по умолчанию игнорируются в ExpressionEngine. Чтобы изменить это, вы должны отредактировать первый index.php и закомментировать значения по умолчанию для маршрутизации:
// $routing[‘directory’] = ‘’;
// $routing[‘controller’] = ‘ee’;
// $routing[‘function’] = ‘index’;
Как только это будет сделано, вы можете добавить контроллеры, как написано в ответе @rjb.
<?php
class Blog extends CI_Controller {
public function index() {
echo 'Hello World!';
}
}
?>
После того, как это будет сделано, ExpressionEngine сначала проверит наличие контроллеров и, если они не найдены, будет искать шаблоны.
Вообще говоря, ExpressionEngine использует группы шаблонов и шаблоны для визуализации контента.
EE построен на CI, но он не функционирует как CI, так как это CMS, а не среда приложения.