Код: Выделить всё
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name')->textarea(['rows' => '3'])->label('Введите описание операции:') ?>
<?= Html::submitButton('Добавить', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
<?php ActiveForm::end(); ?>
Код: Выделить всё
class ModelCheckList extends ActiveRecord{
public $name;
public function rules(){
return [
['name', 'required', 'message'=>'Не заполнено поле.'],
['name', 'string', 'min' => 4, 'tooShort'=>'Описание должно содержать не менее 4 символов.'],
['name', 'string', 'max' => 500, 'tooLong'=>'Описание должно содержать не более 500 символов.'],
];
}
для проверки работы написал так:
Код: Выделить всё
class ModelCheckList extends ActiveRecord{
public $name;
public function rules(){
return [
['name', 'required', 'message'=>'Не заполнено поле.'],
['name', 'string', 'min' => 4, 'tooShort'=>'Описание должно содержать не менее 4 символов.'],
['name', 'string', 'max' => 500, 'tooLong'=>'Описание должно содержать не более 500 символов.'],
['name', 'unique', 'targetClass' => ModelCheckList::checkNameOperations(), 'message' => 'Данное описание уже существует']
];
}
public function checkNameOperations(){
return false;
}
Поиск нужно произвести в таблице с названием CheckListNameOperations а столбец называется name. Думалось после проваерки дописать так, но кажется я не правильно понимаю принцип работы unique:
Код: Выделить всё
class ModelCheckList extends ActiveRecord{
public $name;
public function rules(){
return [
['name', 'required', 'message'=>'Не заполнено поле.'],
['name', 'string', 'min' => 4, 'tooShort'=>'Описание должно содержать не менее 4 символов.'],
['name', 'string', 'max' => 500, 'tooLong'=>'Описание должно содержать не более 500 символов.'],
['name', 'unique', 'targetClass' => ModelCheckList::checkNameOperations(), 'message' => 'Данное описание уже существует']
];
}
public function checkNameOperations(){
$query = new Query;
$name = preg_replace("/ +/"," ", trim($this->name));
$query->from('CheckListNameOperations');
$query->where(['name' => $name]);
$result = $query->count();
if($result > 0){
return false;
}else{
return true;
}
}
}