Для этого нам нужно:
/* ... */ use Yii; use yiirbacItem; /* ... */ $auth = Yii::$app -> authManager; $Item = new Item(); $Item -> type = 3; $Item -> name = 'ItemNewName' $Item -> description = 'ItemNewDescription'; $auth -> add($Item);
Здесь вы можете заказать полный пакет услуг по разработке сайта. Начиная от написания ТЗ до программирования на PHP, JavaScript и верстке.
Для этого нам нужно:
/* ... */ use Yii; use yiirbacItem; /* ... */ $auth = Yii::$app -> authManager; $Item = new Item(); $Item -> type = 3; $Item -> name = 'ItemNewName' $Item -> description = 'ItemNewDescription'; $auth -> add($Item);
Первое что нам нужно, это подключить сам "Pjax":
use yiiwidgetsPjax;
Далее, обернуть нужный контент в "Pjax" виджет. Например так:
<?php Pjax::begin([ 'id' => 'pjaxContent' ]); ?> Здесь контент <?php Pjax::end(); ?>
Говорят:
век живи, век учись, а дураком помрёшь
Это к чему? да это к трейтам в PHP. Они уже давно введены, а я вот только начал их использовать в новом проекте.
Первое что мне пришлось сделать, это вынести в trait метод атрибутов. Да, можно было сделать один родительский класс и наследоваться от него. Но решил все же остановиться на трейтах. Что мы имеем:
namespace commontraitsobject; use Yii; trait ObjectModelTrait { /** * Labels * @return array */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'ID'), 'name' => Yii::t('app', 'Name'), 'desc' => Yii::t('app', 'Description'), 'index_id' => Yii::t('app', 'Index'), 'is_active' => Yii::t('app', 'Is active'), ]; } }
Данный trait не однократно использовался в моделях, вот один из примеров:
namespace commonmodelsterritory; use yiidbActiveRecord; use commontraitsobjectObjectModelTrait; class TerritoryAreaModel extends ActiveRecord { use ObjectModelTrait; public static function tableName() { return '{{%territory_area}}'; } }
Отмена валидации будет выполняться как на стороне клиента (для yiiActiveForm), так и на стороне сервера.
Использование сценария, будет является признаком того, что валидация на стороне сервера по некоторым полям проходить не будет.
На стороне клиента, отмена валидации по нужным полям будет выполняться динамически, в зависимости от выбранного действия (в нашем случае - удалить).
Наш контроллер:
$NewsletterMailForm = new NewsletterMailForm(); if(Yii::$app -> request -> post($NewsletterMailForm -> formName())['event'] != NewsletterMailForm::EVENT_DELETE) { $NewsletterMailForm -> scenario = NewsletterMailForm::EVENT_SEND; }
Если поле "event" не равно "удалению", значит нам нужно отправлять письма (пока другого ничего не предусмотрено).
Для этого, следует сформировать запись следующим образом
Yii::$app -> db -> createCommand() -> update(ContactusModel::tableName(), ['is_read' => 0], [ 'id' => $this -> id ]) -> execute();
Где:
ContactusModel::tableName() - нужная нам таблица
$this -> id - массив из ID, который автоматом и сформирует запрос в IN (.., .., .....)