Як скасувати валідацію деяких полів у 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 (.., .., .....)

Як встановити параметри за замовчуванням для віджету в Yii2
Як встановити параметри за замовчуванням для віджету в Yii2

Щоб встановити параметри за замовчуванням для віджета у Yii2, потрібно використати механізм впровадження залежностей (dependency injection).

Приклад з DatePicker:

Yii::$container -> set('yiijuiDatePicker', [
	'language' => 'en-US',
]);

Першим параметром у set вказується клас, а другим — необхідні параметри для налаштування. Таким чином, ми можемо заздалегідь правильно налаштувати наш віджет.

Свої Grid колонки у фреймворці Yii2
Свої Grid колонки у фреймворці Yii2

Продовжую поповнювати свій багаж знань у Yii2.

Про власні колонки в Grid чув, звісно, але на практиці не використовував. Але коли дублювання коду дійшло до 5 випадків у різних місцях — задумався: чому б не спробувати? Виявилось доволі зручно і гнучко!

Нижче наведено повний листинг коду прикладу колонки, що наслідується від DataColumn:

namespace backendgrid;

use Yii;
use yiihelpersHtml;
use yiigridDataColumn;

class ActiveColumn extends DataColumn
{
	public $headerOptions = [
		'style' => 'width: 80px;'
	];
	
	public $contentOptions = [
		'class' => 'text-center'
	];
	
	public $attribute = 'is_active';
	
    /**
     * @inheritdoc
     */
    protected function renderDataCellContent($a)
    {
		if($a['is_active'] == 1)
		{
			return Html::a('<span class="glyphicon glyphicon-ok-circle"></span>', [
					'active', 'id' => $a['id'], 'is_active' => 0], [
					'title' => Yii::t('app', 'Unactivate this'),
					'data-pjax' => '0',
				]
			);
		}
		return Html::a('<span class="glyphicon glyphicon-lock"></span>', [
				'active', 'id' => $a['id'], 'is_active' => 1], [
				'title' => Yii::t('app', 'Activate this'),
				'data-pjax' => '0',
			]
		);
    }
}

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

Як у PHP дізнатися завтрашню або вчорашню дату у форматі timestamp?
Як у PHP дізнатися завтрашню або вчорашню дату у форматі timestamp?

Щоб отримати вчорашню або завтрашню дату у форматі timestamp (PHP), потрібно використати стандартну функцію PHP "strtotime".

Наприклад, виведемо час поточної дати на момент 00:00:00 (нуль годин, нуль хвилин, нуль секунд):

$t = strtotime('00:00:00');
echo 'Timestamp: '.$t;
echo 'Datetime: '.date('Y-m-d H:i:s',$t);

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