Разработка сайтов на WordPress и фреймворке Yii2

Здесь вы можете заказать полный пакет услуг по разработке сайта. Начиная от написания ТЗ до программирования на PHP, JavaScript и верстке.

Yii2 использование трейтов в модели, и их переопределение

Фреймворк yii2

Говорят:

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

Это к чему? да это к трейтам в PHP. Они уже давно введены, а я вот только начал их использовать в новом проекте.
Первое что мне пришлось сделать, это вынести в trait метод атрибутов. Да, можно было сделать один родительский класс и наследоваться от него. Но решил все же остановиться на трейтах. Что мы имеем:

namespace common\traits\object;

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 common\models\territory;

use yii\db\ActiveRecord;

use common\traits\object\ObjectModelTrait;

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

Фреймворк yii2

Для этого, следует сформировать запись следующим образом

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

Где:
ContactusModel::tableName() - нужная нам таблица
$this -> id - массив из ID, который автоматом и сформирует запрос в IN (.., .., .....)