rules не как не влияет на массовое присваивание. в нем просто описаны правила валидации для элементов.
а вот safeAttributes содержит в себе список элементов которые МОГУТ быть перезаписаны через мас присваивание. если не используете safeAttributes - тогда могут быть присвоины все переменные, но такой подход я крайне не рекомендую.
Нет. Если safeAttributes не определено, то массовове присвоение будет присваивать все элементы.
Это не так. Если safeAttributes() не определена, то массовое присвоение будет работать только в отношение всех полей таблицы. Свойства класса тоже могут быть атрибутами модели. ИХ НУЖНО прописывать в safeAttributes() отдельно. Как показывает good practice, где-то так:
class ARModel extends ActiveRecord
{
public $property;
public safeAttributes()
{
return array(
parent::safeAttributes(), 'property'
);
}
}
Попробовали. Единственный эффект - исчезли звездочки у полей, которые были обязательными. Запись успешно вставляется в БД, и это ожидаемо, потому что класс CModel содержит функцию rules(), которая возвращает пустой массив, так что никаких правил и ограничений, которые могут препятствовать вставке, нет.
Попробовали. Единственный эффект - исчезли звездочки у полей, которые были обязательными. Запись успешно вставляется в БД, и это ожидаемо, потому что класс CModel содержит функцию rules(), которая возвращает пустой массив, так что никаких правил и ограничений, которые могут препятствовать вставке, нет.
Может выложите неработающий код модели и экшена?
пожалуйста.
В модели у меня есть safeAttr…
однако ф-ция rules пустая, и он мне все поля ставит НУЛАями
Может быть дело в версии фреймворка ?я ее с свна дергал… а ?
Хотите верьте, хотите - нет, но я проверил, и у меня всё работает Причем пробовал многие вариации.
Насчет getSafeAttributeNames(). У меня в CModel код абсолютно другой Обновиться до 1.0.7 конечно следует. Может дело действительно в версии? Хотя как-то всё сомнительно.