CMS Admin¶
Административная часть сайта реализована компонентом skeeks/cms-admin
По умолчанию CMS уже сдержит этот компонент.
Настройка и конфигурирование¶
Компонент админки подключается и настраивается стандартным способом в проект.
Пример конфигурирования¶
В файле конфига проекта frontend/config/main.php
отредактировать секцию components
'backendAdmin' =>
[
'class' => '\skeeks\cms\admin\AdminComponent',
'controllerPrefix' => 'admin',
'urlRule' => [
'urlPrefix' => '~sx' //Префикс админки, то есть путь к админке сайта может быть любой
],
'allowedIPs' => [
'91.219.167.252',
'93.186.50.*'
],
'on beforeRun' => function($event) {
\Yii::$app->httpBasicAuth->verify();
}
],
Меню¶
Административное меню формируется путем слияния конфигов всех установленных расширений и конфига проекта.
@skeeks/cms/config/admin/menu.php
@skeeks/cms-admin/config/admin/menu.php
@all-other-extensions/config/admin/menu.php
@common/config/admin/menu.php
Формат¶
В конечном виде конфиг меню представляет собой один большой массив с элементами
[
'users' =>
[
'label' => \Yii::t('skeeks/cms', 'Users'),
'priority' => 200,
'enabled' => true,
"img" => ['\skeeks\cms\modules\admin\assets\AdminAsset', 'images/icons/user.png'],
'items' =>
[
[
"label" => \Yii::t('skeeks/cms',"User management"),
"url" => ["cms/admin-user"],
"img" => ['\skeeks\cms\modules\admin\assets\AdminAsset', 'images/icons/user.png'],
'priority' => 0
],
//....
]
],
],
Каждый элемент массива может содержать следующие опции:
- label — Название пункта меню
- priority — Порядок чем меньше тем выше пункт
- enabled — Показывается или не показывается
- img — Картинка (массив [Asset, ‘путь к файлу’])
- url — URL массив который будет передан в
yii\helpers\Url::to()
;
Создание контроллера¶
В проекте¶
Ссылка на контроллер: Url::to(['/admin-competition'])
Создать файл контроллера: frontend/controllers/AdminCompetitionController.php
namespace frontend\controllers;
use frontend\modules\competition\models\Competition;
class AdminCompetitionController extends \skeeks\cms\modules\admin\controllers\AdminModelEditorController
{
public function init()
{
$this->name = \Yii::t('app', 'Конкурсы');
$this->modelShowAttribute = "name";
$this->modelClassName = Competition::className();
parent::init();
}
}
Создать файл шаблона: frontend/views/admin-competition/index.php
<? $pjax = \skeeks\cms\modules\admin\widgets\Pjax::begin(); ?>
<?php echo $this->render('_search', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
]); ?>
<?= \skeeks\cms\modules\admin\widgets\GridViewStandart::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'adminController' => $controller,
'pjax' => $pjax,
'columns' => [
'name',
],
]); ?>
<? $pjax::end(); ?>
Создать файл для фильтров и поиска: frontend/views/admin-competition/_search.php
<?
$filter = new \yii\base\DynamicModel([
'id',
]);
$filter->addRule('id', 'integer');
$filter->load(\Yii::$app->request->get());
if ($filter->id)
{
$dataProvider->query->andWhere(['id' => $filter->id]);
}
?>
<? $form = \skeeks\cms\modules\admin\widgets\filters\AdminFiltersForm::begin([
'action' => '/' . \Yii::$app->request->pathInfo,
]); ?>
<?= $form->field($searchModel, 'name')->setVisible(); ?>
<? $form::end(); ?>
Создать файл для редактирования элементов: frontend/views/admin-competition/_form.php
<?php $form = ActiveForm::begin(); ?>
<?php ?>
<?= $form->fieldSet( \Yii::t('skeeks/form2/app', 'General information'))?>
<?= $form->field($model, 'name')->textInput(); ?>
<?= $form->field($model, 'description')->textInput(); ?>
<?= $form->field($model, 'is_active')->checkbox(); ?>
<?= $form->fieldSetEnd(); ?>
<?= $form->buttonsCreateOrUpdate($model); ?>
<?php ActiveForm::end(); ?>