Не удалось присвоить небезопасный атрибут - которого нет

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
nekulin
Сообщения: 24
Зарегистрирован: 2011.12.03, 09:07

Не удалось присвоить небезопасный атрибут - которого нет

Сообщение nekulin »

Всем привет! Вопрос: "Зачем обрабатывать поле если оно не описанно в модели и писать в лог ошибку".

Модель

Код: Выделить всё

    public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('email, password', 'required', 'on' => 'registration'),
            array('is_real', 'numerical', 'integerOnly'=>true),
            array('email', 'length', 'max'=>150),
            array('cat', 'length', 'max'=>255),
            array('password', 'length', 'max'=>32),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('id, email, cat, password, is_real', 'safe', 'on'=>'search'),
        );
    }
 
Ошибка
Не удалось присвоить небезопасный атрибут "region_id" класса "RegistrationUser".
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение ElisDN »

Постройте форму так, чтобы оно и не пыталось присвоиться.
nekulin
Сообщения: 24
Зарегистрирован: 2011.12.03, 09:07

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение nekulin »

Построение формы это не решение проблемы. Потому что я могу запроста подделать запрос вручную и у меня будет куче мусора в логах.
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение R3D3 »

Это логи для разработки. На продакшене логирование такого должно быть отключено.
Yii Jabber Conference: yii@conference.jabber.ru
Аватара пользователя
GeX
Сообщения: 52
Зарегистрирован: 2013.01.22, 09:10

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение GeX »

На самом деле вопрос интересный. Например у меня в модели формы часть полей соответствует одной таблице, часть другой, играться и разделять их нет ни времени, ни желания, если честно. По идее логично делать:

Код: Выделить всё

$UserRow->attributes = $ProfileFormModel->attributes;
$UserRow->save();

$UserProfileRow->attributes = $ProfileFormModel->attributes;
$UserProfileRow->save();
 
И каждая модель таблицы возьмёт из модели формы то что ей нужно... по идее... а по факту каждая из них в лог ворнингами гадит :( ... Или есть менее идиотский способ решить подобную задачу?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение ElisDN »

GeX писал(а): Или есть менее идиотский способ решить подобную задачу?
Никто не гадит, если отключить YII_DEBUG.

А если это мешает, то:

Код: Выделить всё

$UserRow->attributes = array_intersect_key($ProfileFormModel->attributes, $UserRow->safeAttributeNames);
$UserRow->save();

$UserProfileRow->attributes = array_intersect_key($ProfileFormModel->attributes, $UserProfileRow->safeAttributeNames);
$UserProfileRow->save();
Аватара пользователя
GeX
Сообщения: 52
Зарегистрирован: 2013.01.22, 09:10

Re: Не удалось присвоить небезопасный атрибут - которого нет

Сообщение GeX »

Не, отключать YII_DEBUG не интересно, а вот второе решение интересное, спасибо, не сообразил в ту сторону копнуть.
Ответить