Yii2

Як створити свій тип дозволу в Yii2 (для RBAC)
Як створити свій тип дозволу в Yii2 (для RBAC)

Для цього нам потрібно:

/* ... */
use Yii;
use yiirbacItem;
/* ... */

$auth = Yii::$app -> authManager;

$Item = new Item();
$Item -> type = 3;
$Item -> name = 'ItemNewName'
$Item -> description = 'ItemNewDescription';
$auth -> add($Item);

читати далі...

Як у Yii2 оновити частину контенту використовуючи JavaScripit та Pjax
Як у Yii2 оновити частину контенту використовуючи JavaScripit та Pjax

Перше, що нам потрібно — це підключити сам "Pjax":

use yiiwidgetsPjax;

Далі — обгорнути потрібний контент у віджет Pjax. Наприклад ось так:

<?php Pjax::begin([ 'id' => 'pjaxContent'
]); ?>

Content here

<?php Pjax::end(); ?>

читати далі...

Yii2 використання трейтів у моделі, та їх перевизначення
Yii2 використання трейтів у моделі, та їх перевизначення

Кажуть:

вік живи, вік учись, а дурнем помреш

До чого це? А це про трейти в 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}}';
    }
}

читати далі...

Як скасувати валідацію деяких полів у Yii2
Як скасувати валідацію деяких полів у Yii2

Скасування валідації буде виконуватись як на стороні клієнта (для yiiActiveForm), так і на стороні сервера.

Використання сценарію буде слугувати ознакою того, що валідація на стороні сервера для деяких полів виконуватись не буде.

На стороні клієнта скасування валідації для потрібних полів буде виконуватись динамічно, в залежності від вибраної дії (у нашому випадку — видалення).

Наш контролер:

$NewsletterMailForm = new NewsletterMailForm();

if(Yii::$app -> request -> post($NewsletterMailForm -> formName())['event'] != NewsletterMailForm::EVENT_DELETE)
{
	$NewsletterMailForm -> scenario = NewsletterMailForm::EVENT_SEND;
}

Якщо поле "event" не дорівнює "видалити", це означає, що потрібно надсилати листи (інших дій поки не передбачено).

читати далі...

Використання IN в createCommand фреймворку Yii2
Використання IN в createCommand фреймворку Yii2

Для цього слід сформувати запис наступним чином:

Yii::$app -> db -> createCommand() -> update(ContactusModel::tableName(), ['is_read' => 0], [
	'id' => $this -> id
]) -> execute();

Де:
ContactusModel::tableName() — потрібна нам таблиця
$this -> id — масив із ID, який автоматично сформує запит з IN (.., .., .....)