Контроллеры 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, а не среда приложения.

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