2014-03-28 55 views
0

EditCreate頁面可以共享一個驗證規則嗎?Yii驗證

例如,在創建相冊時,您必須提供一個名稱並選擇一個圖像(該相冊的封面)。然後一個表單被序列化。假設等作爲,

<form> 

    <input type="text" name="name"/> 

    <br /> 

    <input type="file" name="cover" /> 

</form> 

再一個形式如下:場name不能爲空和圖像應在cover

選擇,但約Edit頁是什麼? 這裏的名字是必須的,但cover不是(因爲用戶可能會留空以覆蓋現有的封面)!

這可以在Yii中默認完成嗎?

回答

2

如果您希望編輯和插入不同的驗證,您可以在模型rules如下

array('name', 'required', 'on'=>'create'), 

參考:http://www.yiiframework.com/wiki/266/understanding-scenarios

+0

不,不,不,我想要在編輯和創建表單時使用相同的驗證器(因爲他們在現實世界場景中會有很多字段 - 名稱,性別,國家等)。**但是編輯表單中不需要圖像,而在創建窗體上需要 – Yang

+0

然後發佈你的'規則'功能來解決。 –

+0

如果沒有''on'=>'create''則該規則將用於所有場景。或者,「on」=>'create,update'的規則僅適用於創建或更新。 – topher

0

你需要編寫與方案中的規則創建,只爲名稱:

array('name', 'required', 'on'=>'create'), 

如果您的其他字段(性別,國家...)與任何場景無關,那麼它們也將被應用在「創建」場景中。

array('gender', 'required'), 

使用$ model-> setScenario('create')創建動作。