Для каких входов я должен определить правила в классе модели?
Должен ли я определить правила для всех входных элементов в классе модели? Например, форма модели имеет 2 элемента типа ввода и текстовое поле. Могу ли я просто определить правила для этих двух типов ввода, а не для textarea?
Я так и сделал, но текст, введенный внутри текстовой области, не сохраняется, но если я добавлю, например, правило для его длины, оно будет сохранено.
1 ответ
Если вы не определяете какие-либо правила для атрибута (или определяете unsafe
правило), этот атрибут не будет установлен во время массового назначения ($model->attributes = $_POST['ModelClassName']
). Это кажется наиболее вероятной причиной, по которой ваше значение текстовой области не сохраняется. См. Защита назначений атрибутов.
Документация Yii предлагает только создавать правила для полей, которые принимают пользовательский ввод. Тем не менее, я нашел полезным указать правила для всех атрибутов, как на основе бизнес-логики, так и на основе хранения базы данных (хотя мне не нравится тот факт, что один и тот же класс должен беспокоиться об обоих этих аспектах), а затем добавить unsafe
правила для полей, где массовое назначение не должно быть разрешено.