是什么导致$ model->属性在Yii中无法获得正确的值?

时间:2012-06-18 15:50:33

标签: php yii

我在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吗?

2 个答案:

答案 0 :(得分:11)

我发现yii中有一个关于此类作业的术语:大量作业。所以我应该明确定义每个字段的验证以进行大规模作业。

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

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

  

对于某些领域,没有什么可以验证的,对吧?

     

错误:仅指定用户明确指定的字段值   说有资格复制到$ model,这限制了shenanigans   一个试图污染模型的坏人。

     

即使字段没有特定的数据格式验证,我们仍然如此   必须告诉Yii我们希望在Massive期间复制属性   分配。这是通过'安全'验证器完成的。

答案 1 :(得分:1)

错误:通过仅指定用户明确表示可以复制到$ model的字段值,这限制了一个试图污染模型的坏人的恶作剧。

即使某个字段没有特定的数据格式验证,我们仍然必须告诉Yii我们希望在Massive Assignment期间复制该属性。这是通过'安全'验证器完成的。 http://www.jili.ir