2012-02-29 118 views
2

如所述here,Yii提供虛擬屬性。添加以下到我的模型:CActiveForm和虛擬屬性

public function getTest() 
{ 
... 
} 

public function setTest($value) 
{ 
... 
} 

在我CActiveForm我用一個文本字段下面:

<div class="row"> 
    <?php echo $form->labelEx($model,'test'); ?> 
    <?php echo $form->textField($model,'test'); ?> 
    <?php echo $form->error($model,'test'); ?> 
</div> 

當打開表單時,得到-方法被調用(與調試驗證) 。保存記錄不會調用setter(每個其他屬性都會正常保存並正常工作)。

有人幫我解決這個問題嗎?

回答

3

我想你缺少定義變量「測試」的規則。

public function rules() 
{ 
    $rules[] = array('test','safe'); 
    return $rules; 
} 
+0

我嘗試過這個問題,以及和結果是,在英語中 「Eigenschaft CSafeValidator.0 IST nicht definiert」: 「物業CSafeValidator.0是不確定的。」因爲我對Yii很陌生,所以不知道該怎麼改變。 – 2012-02-29 11:20:21

+1

你會plz發佈你的型號代碼 – 2012-02-29 11:56:23

+0

發現我的問題,規則()確實沒有正確定義。我省略了導致我的問題的'安全'選項。所以你的答案是100%正確的。 – 2012-02-29 13:14:36