2014-01-09 74 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'; 
} 
....