2012-06-18 1 views
3

У меня есть эти строки в моем actionCreate:

if (isset($_POST['DpcioCbn'])) { 
    print_r($_POST['DpcioCbn']); 
    $model->attributes = $_POST['DpcioCbn']; 
    print_r($model->attributes); 
    die(); 
    ... 
} 

которые возвращают это:

Array 
(
    [code] => 34324 
    [bn_fa] => dfsf 
    [bn_en] => sdf 
    [cbn_fa] => sdfds 
    [cbn_en] => f 
    [description] => dsfsdfsdf 
    [update_at] => 1391-03-16 
    [active] => 1 
) 
Array 
(
    [active] => 1 
    [code] => 34324 
    [bn_fa] => dfsf 
    [bn_en] => sdf 
    [cbn_fa] => sdfds 
    [cbn_en] => f 
    [update_at] => 1391-03-16 
    [id] => 
    [description] => 
) 

, что происходит за description поле? есть ли что-нибудь в этом задании Yii?

ответ

11

Я нашел, что существует термин в yii вокруг этого типа назначений: Массивное задание. Поэтому я должен явно определить валидацию для каждого поля, чтобы сделать массовое присвоение.

public function rules() { 
    return array(
     ... 
     array('description', 'safe'), 
     ... 
); 
} 

http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/#hh2

Для некоторых полей, нет ничего, чтобы проверить, правильно?

Неправильно: лишь присваивающих значения полей, которые пользователь явно сказал, имеют право на копирование в $ модели, это ограничивает махинаций плохой парень пытается загрязняют модель.

Даже если поле не имеет определенных данных в форматах данных, мы все равно должны указать Yii, мы хотим, чтобы атрибут был скопирован во время Massive Назначение. Это делается с помощью «безопасного» валидатора.

1

Неверно: только присваивая значения полей, явно указанные пользователем, имеют право на копирование в $ model, это ограничивает использование махинаций плохого парня, пытающегося загрязнить модель.

Даже если в поле нет определенных данных для проверки формата данных, нам все равно нужно указать Yii, что мы хотим, чтобы атрибут был скопирован во время Massive Assignment. Это делается с помощью «безопасного» валидатора. http://www.jili.ir