Функция setAttribute () в YII не работает - PullRequest
1 голос
/ 01 декабря 2011

Я использую PHP Yii Framework с MongoDB (yiimongodbsuite). Я создал модель, которая выходит из EMongoDocument.

<?php

 class MyModel extends EMongoDocument
 {
     public $attr1;
     public $attr2;

     // rules, custom validations and other functions....

     public function setAttributes($values, $safeOnly=true)
     {
      if(!is_array($values))
        return;

      if($this->hasEmbeddedDocuments())
      {
        $attributes=array_flip($safeOnly ? $this->getSafeAttributeNames() : $this->attributeNames());

        foreach($this->embeddedDocuments() as $fieldName => $className)
            if(isset($values[$fieldName]) && isset($attributes[$fieldName]))
            {
                $this->$fieldName->setAttributes($values[$fieldName], $safeOnly);
                unset($values[$fieldName]);
            }
       }

    parent::setAttributes($values, $safeOnly);
    }
  }

В контроллере,

$dataModel = new MyModel();
$dataModel->setAttributes($_POST['MyModel']);
if($dataModel->validate()){
    $dataModel->save();
}

вышеуказанный код не устанавливает значение атрибута. Пожалуйста, дайте мне знать, если есть какая-либо ошибка.

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

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

Чтобы понять больше, прочитайте это http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/

0 голосов
/ 09 сентября 2013

Попробуйте определить, какие ошибки проверки у вас есть:

if(!$model->validate()) {
    die( print_r($model->getErrors()) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...