我正在使用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();
}
上面的代码没有设置属性值。 如果有任何错误,请告诉我。
答案 0 :(得分:3)
您需要确保在每个级别使用“安全”验证规则。
要了解更多信息,请阅读此http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/
答案 1 :(得分:0)
尝试确定您有哪些验证错误:
if(!$model->validate()) {
die( print_r($model->getErrors()) );
}