Контроллеры двигателей выражений

Я создаю свой первый сайт в Expression Engine, мне было интересно, как использовать пользовательские контроллеры в EE, как в Codeigniter, или что такое EE-эквивалент?

Контроллеры являются основой вашего приложения, поскольку они определяют, как обрабатывать HTTP-запросы.

Как вы, вероятно, хорошо осведомлены, CodeIgniter Controller – это просто файл класса, который указан таким образом, который может быть связан с 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, а не среда приложения.