2014-01-09 66 views
1

我想根据属性使Yii Model规则动态化。Yii动态模型规则

它没有给出错误,但也没有工作。 我做错了什么?有更简单的方法来做到这一点?


Model.php(属性:NAMETYPE

public function rules() 
{ 
    return array(
     // Name is only required when Type is equal 1. 
     $this->type==1 ? array('name', 'required') : null, 
    ); 
} 

回答

2

变化到(使用scenario):

public function rules() 
{ 
    return array(
     array('name', 'required','on'=>'typeTrue') 
    ); 
} 

而在控制器

public function actionSome() { 
    $model = new Model(); 
    if ($model->type == 1) { 
    $model->setScenario('typeTrue'); 
    } 
} 
+0

真的感谢!我发现它,并已在这里发布相同的答案。我会删除并接受你的。感谢您的努力。 –

1

我找到了答案,我想分享。 因为它需要使用Yii规则scenarios

Model.php:

public function rules() 
{ 
    return array(
     array('name', 'required', 'on'=>'type1'), 
    ); 
} 

Controller.php这样:

... 
if ($model->type==1) { 
    $model->scenario = 'type1'; 
} 
....