Шаг 1, старт.

И так создадим свой первой модуль, назовем его классически, hello.

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

Приступаем:

  1. В папке /создадим папку . Это будет корневая папка нашего модуля.
  2. В этой папке создадим папку
  3. В этой же папке создадим файл .
  4. Ну и наконец создадим наш первый контроллер .

Как итог у нас будет следующая структура папки:

/system/modules/hello

/system/modules/hello/controllers

/system/modules/hello/controllers/Index.php – наш первый контроллер.

/system/modules/hello/rights.php – ФАЙЛ ОБЯЗАТЕЛЬНЫЙ, без этого файла, модуль считается ВЫКЛЮЧЕННЫМ.

ВАЖНО:  Название контроллера с большой БУКВЫ  “ Index “.

Система определяет путь до контроллера по урлу. Иными словами, когда вы запрашиваете урл, /hello/p1/p2 и т.д. То система берет ваш УРЛ,  берет его первую часть “hello” и пробует найти контроллер в папке hello с именем P1, если не находит ищет с именем Index, если и его не находит то, передает управление «дефолтовому контроллеру», если же и его не находит, то выдает ошибку. Так как у нас есть, контроллер с именем Index то он найдется. Но если мы создадим файл с именем P1, то он получит «приоритет». Но это свойство системы, нужно использовать осторожно, так как оно дает как преимущества, так и недостатки.

 

И так поздравляю, мы создали первый контроллер, который лежит в папке controllers, папки hello.

Попробуем открыть сайт по адресу: YOU_DOMAIN/hello

                                        ОЙ ОШИБКА!

На самом деле все верно, система увидела ваш модуль, но файл rights.php пустой, а значит у вас нет прав, на доступ к данному урлу, давайте исправим это:

Открываем файл rights.php и пишем в него:

<?php
return [

    'Index' => [

        "role" => ["*"]

    ]

];

 

Коротко разберем, что здесь написано:

Index – название нашего контроллера.

Ключевое слово role – которое указывает роли, которые имеют доступ к данному контроллеру.

У role  передается массив ролей, которые будут иметь доступ к данному контроллеру.

* - означает, что доступ будет иметь ЛЮБАЯ роль. Т.е. все.

Сохраним изменения и попробуем отрыть урл.

И мы увидели белый экран ...

ОТЛИЧНО! Мы сделали наш контроллер рабочим! Но пока он ничего не умеет, но вы уже можете писать свой код в нем и хотя это плохая практика (как делать правильно, читайте в шаг 2), продолжим.

Откроем наш файл, Index.php и напишем в нем.

<?php echo "HELLO WORLD"

 

Еще раз, откроем нашу ссылку YOU_DOMAIN/hello

И ура! Видим надпись «HELLO WORLD»

Поздравляю, вы создали первый скрипт модуля, а также уже сделали базовую проверку прав.

 

ВАШИ ПЛЮСЫ:

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

Базовая дебаг панель, уже в вашем распоряжении.

Все мелкие фишки, уже можно использовать, попробуйте заменить содержимое файла на

<?php
\core\Html::instance()->renderTemplate("@admin")->show();

 

Согласитесь неплохо ? 

 

МИНУСЫ:

  1. При такой реализации, система лишь проверит права доступа к контроллеру, но остальное на вас.
  2. Обратите внимание, что если вы измените УРЛ, то все равно откроется ваш контроллер. Например:
    • YOU_DOMAIN/hello
    • YOU_DOMAIN/hello/12
    • YOU_DOMAIN/hello/12321
    • И т.д.
  3. Иными словами контроль, за урлом и параметрами, при такой реализации ложится на вас.

Тип запроса, вы тоже контролируете сами… Но если вы только начинаете, то это уже начало.

Читайте шаг 2, или как сделать свою жизнь еще проще.