skills on main page api and admin
This commit is contained in:
@ -2,6 +2,9 @@
|
||||
|
||||
namespace backend\modules\settings\controllers;
|
||||
|
||||
use backend\modules\options\Options;
|
||||
use backend\modules\settings\models\SkillsOnMainPageForm;
|
||||
use common\classes\Debug;
|
||||
use Yii;
|
||||
use backend\modules\settings\models\Skill;
|
||||
use backend\modules\settings\models\SkillSearch;
|
||||
@ -105,6 +108,21 @@ class SkillController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function actionSkillsOnMainPage()
|
||||
{
|
||||
$model = new SkillsOnMainPageForm();
|
||||
|
||||
if ($model->load(Yii::$app->request->post())) {
|
||||
$model->saveSkills();
|
||||
$model->showMsg = true;
|
||||
} else {
|
||||
$skills = \common\models\Options::getValue('skills_on_main_page');
|
||||
$model->load(json_decode($skills, true));
|
||||
}
|
||||
|
||||
return $this->render('skills-on-main-page', ['model' => $model]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an existing Skill model.
|
||||
* If deletion is successful, the browser will be redirected to the 'index' page.
|
||||
|
67
backend/modules/settings/models/SkillsOnMainPageForm.php
Normal file
67
backend/modules/settings/models/SkillsOnMainPageForm.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace backend\modules\settings\models;
|
||||
|
||||
|
||||
use common\classes\Debug;
|
||||
use common\models\Options;
|
||||
use yii\base\Model;
|
||||
|
||||
/**
|
||||
* Class SkillsOnMainPageForm
|
||||
* @property array $skills_back
|
||||
* @property array $skills_front
|
||||
* @property array $skills_design
|
||||
* @package backend\modules\settings\models
|
||||
*/
|
||||
class SkillsOnMainPageForm extends Model
|
||||
{
|
||||
|
||||
public $skills_back;
|
||||
public $skills_front;
|
||||
public $skills_design;
|
||||
public $showMsg = false;
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['skills_back', 'skills_front', 'skills_design'], 'checkIsArray'],
|
||||
];
|
||||
}
|
||||
|
||||
public function checkIsArray()
|
||||
{
|
||||
if (!is_array($this->_task)) {
|
||||
$this->addError('_task', 'X is not array!');
|
||||
}
|
||||
}
|
||||
|
||||
public function saveSkills()
|
||||
{
|
||||
$res = [];
|
||||
$resToFront = [];
|
||||
if ($this->skills_back) {
|
||||
$res['SkillsOnMainPageForm']['skills_back'] = $this->skills_back;
|
||||
foreach ($this->skills_back as $item) {
|
||||
$resToFront['skills_back'][] = [$item => \common\models\Skill::getNameById($item)];
|
||||
}
|
||||
}
|
||||
if ($this->skills_front) {
|
||||
$res['SkillsOnMainPageForm']['skills_front'] = $this->skills_front;
|
||||
foreach ($this->skills_front as $item) {
|
||||
$resToFront['skills_front'][] = [$item => \common\models\Skill::getNameById($item)];
|
||||
}
|
||||
}
|
||||
if ($this->skills_design) {
|
||||
$res['SkillsOnMainPageForm']['skills_design'] = $this->skills_design;
|
||||
foreach ($this->skills_design as $item) {
|
||||
$resToFront['skills_design'][] = [$item => \common\models\Skill::getNameById($item)];
|
||||
}
|
||||
}
|
||||
|
||||
Options::setValue('skills_on_main_page', json_encode($res));
|
||||
Options::setValue('skills_on_main_page_to_front', json_encode($resToFront));
|
||||
}
|
||||
|
||||
}
|
@ -17,6 +17,7 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
<p>
|
||||
<?= Html::a('Добавить', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
<?= Html::a('Категории', ['/settings/skill-category'], ['class' => 'btn btn-success']) ?>
|
||||
<?= Html::a('Навыки на главной', ['/settings/skill/skills-on-main-page'], ['class' => 'btn btn-success']) ?>
|
||||
</p>
|
||||
|
||||
<?= GridView::widget([
|
||||
|
74
backend/modules/settings/views/skill/skills-on-main-page.php
Normal file
74
backend/modules/settings/views/skill/skills-on-main-page.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
use kartik\select2\Select2;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $form yii\widgets\ActiveForm */
|
||||
/* @var $model \backend\modules\settings\models\SkillsOnMainPageForm */
|
||||
|
||||
?>
|
||||
<div class="skill-form">
|
||||
|
||||
<?php if ($model->showMsg): ?>
|
||||
<div class="alert alert-success" role="alert">
|
||||
Данные сохранены.
|
||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php $form = ActiveForm::begin(); ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<?= $form->field($model, 'skills_back')->widget(
|
||||
Select2::class,
|
||||
[
|
||||
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
|
||||
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
]
|
||||
)->label('Навыки Backend'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<?= $form->field($model, 'skills_front')->widget(
|
||||
Select2::class,
|
||||
[
|
||||
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
|
||||
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
]
|
||||
)->label('Навыки FrontEnd'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<?= $form->field($model, 'skills_design')->widget(
|
||||
Select2::class,
|
||||
[
|
||||
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
|
||||
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
|
||||
'pluginOptions' => [
|
||||
'allowClear' => true
|
||||
],
|
||||
]
|
||||
)->label('Навыки Design'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
Reference in New Issue
Block a user