Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE

Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE

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

В Yii2 модули считаются мини-автономными программными пакетами, содержащими полный стек MVC. В сочетании с приложением модули обеспечивают такой способ расширения приложений, когда добавление новых функций и инструментов происходит без добавления кода в нашу основную базу приложения. Следовательно, модули - отличный способ создать и повторно использовать код. При создании приложений с Yii2 вы, скорее всего, будете работать с предварительно созданными модулями, такими как Gii или Yii2 dev; однако модули также могут быть настраиваемыми приложениями, созданными специально для создания и разделения кода для определенной цели. Мы рассмотрим базовые модули в Yii2, а также рассмотрим, как создавать и внедрять их в нашем приложении.

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

Компоненты модуля

В Yii2 модули хранятся в каталоге модулей нашего корневого приложения и регистрируются в нашем приложении через веб-файлы или конфигурационные файлы консоли. Так же как и в каталоге приложения, в каталоге модуля существует поддиректория controllers, а также models, views и другие, в них размещаются контроллеры, модели, виды и другие компоненты. Если бы мы посмотрим базовый модуль, структура его каталогов и основные файлы выглядят примерно следующим образом:

app/   
 Module.php  файл класса модуля 
 controllers/ содержит файлы классов контроллеров
 DefaultController.php файл класса контроллера по умолчанию
 models/ содержит файлы классов моделей
 views/ содержит файлы представлений контроллеров и шаблонов
 layouts/ содержит файлы представлений шаблонов
 default/ содержит файлы представления контроллера
 index.php файл основного представления

Каждый модуль, зарегистрированный в нашем приложении, находится в своей собственной папке, которая по умолчанию имеет свой соответствующий маршрут в нашем менеджере URL (в этом случае папка mymodule будет соответствовать маршруту URI/mymodule). Следовательно, любой контроллер в модуле, если иное не зарегистрировано нашим менеджером URL-адресов, не будет доступен в качестве выделенного маршрута контроллера внутри самого модуля. Например, контроллер DefaultController.php будет отображать корневой маршрут нашего модуля (/mymodule), а любой другой контроллер будет отображать имя контроллера в URI/mymodule.

Кроме того, модули обеспечивают полную поддержку базовой архитектуры MVC в Yii2. Каждый модуль может иметь свой собственный набор моделей, представлений, контроллеров и даже компонентов. Как и в случае с полными приложениями, модули также поддерживают собственные представления и макеты, что позволяет им разрабатываться и управляться иначе, чем наше основное приложение. В рамках приложения Yii2 они также имеют полный доступ к моделям и классам, реализованным в нашем основном приложении.

Структура класса модуля

Наиболее важной частью модуля является класс модуля, определенный в файле Module.php в корневой директории нашего модуля. На самом базовом уровне модуль должен просто расширить класс yii\base\Module:

<?php
namespace app\modules\admin;
class Module extends \yii\base\Module {
public $controllerNamespace = 'app\modules\admin\controllers';
public function init()
{
    parent::init();  
// custom initialization code goes here
}
}

Однако, как и все в Yii2, модули могут определять свой пользовательский код инициализации и файлы конфигурации, перегружая общедоступный метод init () нашего класса. Как минимум, при перегрузке этого метода мы хотим убедиться, что вызывается родительский метод init () из yii\base\Module.

public function init()
{
parent::init();
// Set custom parameters
$this->params['a'] = 'b';
// Register a custom Yii config for our module
\Yii::configure($this, require __DIR__ . '/config/config.php');
}


Мы также можем определить дополнительные пользовательские параметры с помощью нашего модуля, добавив значения в массив yii\base\Module :: $ params. Кроме того, пользовательские конфигурации могут быть зарегистрированы в нашем модуле с использованием статического метода Yii :: configure (). Эта конфигурация может быть простой пара ключ-значение или может быть полным конфигурационным файлом, например, используемым в наших конфигурационных файлах в Web и в консоли.

Синтаксис конфигурации Yii2 можно подробно изучить в руководстве Yii2.


Контроллеры

Внутри модуля контроллеры помещаются в каталог controllers/ основного модуля, и в соответствии с соглашением Yii2 они живут в пространстве имен модулей. Например, чтобы создать контроллер по умолчанию для нашего модуля mymodule, мы добавим следующее в app/modules/mymodule/controller/ DefaultController.php:

<?php
namespace app\modules\admin\controllers;
use yii\web\Controller;
/**
 * Default controller for the `admin` module
 */
class DefaultController extends \yii\web\Controller
{
    /**
     * Renders the index view for the module
     * @return string
     */
    public function actionIndex()
    {
        return $this->render('index');
    }
}

 

Как и в других контроллерах внутри нашего проекта, действие по умолчанию в нашем контроллере - это index action. Поскольку контроллеры в нашем модуле расширяют yii\web\controller, мы можем настроить наше действие по умолчанию, установив параметр yii\web\controller :: $ defaultAction.

По умолчанию Yii2 сформирует route  /mymodule URI в класс DefaultController. Однако, если мы хотим изменить это, мы можем настроить параметр  класса $defaultRoute нашего модуля. Например, если у нас есть контроллер для обработки пользователей под названием UserController, мы можем сделать нашу карту маршрутов по умолчанию нашим контроллером следующим образом:

<?php
namespace app\modules\mymodule;
class Module extends \yii\base\Module
{
public $defaultRoute = 'user'; // user maps to UserController
}

Следовательно, переход к / mymodule внутри нашего модуля приведет к выполнению нашего класса UserController, а не DefaultController. Помните, что если не указано иное, контроллеры всегда будут доступны в их названном URI. В нашем примере оба /mymodule и /mymodule/user будут отображаться в одном контроллере и выполнять аналогичные действия. Если вы не хотите, чтобы именованный маршрут контроллера был включен после настройки параметра $defaultRoute, соответствующим образом настройте маршрутизатор.

Более детально с общими вопросами применения модулей можно познакомиться в официальном руководстве или полном руководстве по Yii 2.0.

Создание модуля admin панели

Рассмотрим использование модулей на примере процедуры создания модуля административной панели с нуля. Выберем метод создания, который заключается в применении генератора кода – модуля Gii. Воспользуемся Yii2 расширением Gii, который поможет нам сгенерировать код модуля. Как вы помните, вызвать главную панель расширения кодогенератора можно по адресу http://basic.loc/web/index.php?r=gii. Выберем кнопку «Старт» секции Module Generator и кликнем по ней:

Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE

Вставим значения в поля формы:
Module Class: app\modules\admin\Module
Module ID: admin
Затем кликаем по кнопке Preview:  

Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE
и на следующем экране нажимаем кнопку Generate. После этого мы вставляем для приложения следующий код в файл config/web:

'modules' => [
'admin' => [
 'class' => 'app\modules\admin\Module',
'layout' => 'main',
     ]
 ],

который подключит созданный фреймворком модуль админ-панели. В папке контроллеров модуля был создан контроллер DefaultController, в этом вы можете убедиться сами, для этого необходимо в адресной строке браузера набрать адрес нашего модуля — http://basic/web/index.php?r=admin.

Интеграция шаблона Yii2 AdminLTE

Для установки шаблона Yii2 AdminLTE мы будем использовать Composer. Откроем консоль Open Server и перейдем в каталог сайта basic.loc при помощи команды:    

cd domains\basic.loc

Затем при помощи следующей команды загрузим тему в наше приложение:

composer require dmstr/yii2-adminlte-asset "2.*"

Данная инструкция установит 2-ю версию выбранной нами темы, дождёмся выполнения команды и её завершения. После завершения процедуры установки перенесём файлы темы в каталог модуля админ-панели. Для этого зайдём в папку vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app и скопируем две папки: layouts и site вместе с их содержимым в папку modules/admin/views. При попытке входа в административную панель мы попадаем на страницу авторизации:

 Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE

и после ввода логина и пароля мы увидим, что тема http://basic.loc/web/index.php?r=admin успешно установлена:

Модули. Создание админ-панели и подключение шаблона Yii2 AdminLTE



Проект IRBIS

Проект IRBIS

Проект IRBIS - это проект развития интеллектуальных ресурсов и содействие преобразованию специалистов в технологически грамотных и социально ответственных профессионалов в области информационных технологий.

Разработка веб-приложений

Проект IRBIS

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

Back-end разработка

HTML-верстка: инструменты и приемы профессиональной front-end разработки c 29 января 2016 по 23 марта 2016

Front-end разработчик

HTML-верстка: инструменты и приемы профессиональной front-end разработки