KonstantinPR
@KonstantinPR
Разработчик PHP, VBA

Как можно сократить rules в валидации форм в Yii2?

Имеем код из модели Yii2

<?php

namespace app\models;

use yii\base\Model;

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules() {
       return [
           [['name'], 'required'],
           ['email', 'email']
       ];
    }

}

Возможно ли сократить rules (в идеале вообще не валидировать) и насколько (если оставляю пустым - данные из формы не передаются)?
Предстоит перенести свой проект с процедурки ( new.elenachezelle.ru/pattern/startpattern.php ) в Yii2.
Там много полей, а я уже застопорился на передаче данных из формы.

Спасибо за внимание)
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Мало того , что тегами не пользуетесь, так ещё и документацию вообще не читаете!
Зачем Вы такую портянку пишите?!
Вот, всё коротко и ясно.
[['greger','egrerg','gergerg','egerge'], 'string'],

То, как Вы написали, предназначено для валидации одного поля:
['greger', 'string'],
Вот Вам и всё сокращение!
И это Вы всё равно валидируете.
Попробуйте полю с типом string задать числовое значение. Сразу и ошибка выйдет и красная рамка буде... Всё будет.

P.S.
Или вообще, попробуйте так записать в правилах, возможно сработает
[$this->attributes(), 'string']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov
Web developer
Если хотите писать говнокод и самостоятельно присваивать значения без валидации - можете не использовать rules().

Если хотите принимать значения массивом через ->attributes($post), но без валидации - надо перечислить разрешенные поля хотя бы одной строчкой rules().

Если хотите писать грамотный код - надо валидировать всё.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы