2012-02-09 70 views
1

Yii框架中,你怎麼abort任何further validation之後的規則返回FALSEYii:在一個規則返回FALSE後,如何中止模型驗證?

我想實現的是:

1)停止不必要的MySQL查詢後,我們知道,一個模型沒有通過驗證。 2)更清潔,易於理解網絡用戶的錯誤消息,而不需要在控制器中手動排序它們。

非常感謝您的幫助!

+0

是你想用validate()方法驗證?因爲如果你是,那麼我不認爲有任何查詢完成的驗證方法,但不知道它。 – 2012-02-09 03:19:12

+1

我正在做'validate()'和'save()'驗證。許多驗證是查詢數據庫的自定義方法,以及一些內置的方法('unique','exists'),我相信也會查詢MySQL。 – Sebastian 2012-02-09 03:25:29

+0

我立場糾正,一些顯然做查詢。 – 2012-02-09 03:33:48

回答

3

簡而言之:沒有全局設置或解決方案:如果您查看CActiveRecord :: validate(),您可以看到所有驗證器都被調用並執行。

您可以防止對同一個屬性運行多個驗證。您必須爲所有驗證規則設置skipOnError = true。

http://www.yiiframework.com/doc/api/1.1/CValidator/#skipOnError-detail

是否時,已經是當前屬性 驗證錯誤,這個驗證規則是否跳過。默認爲false。

我認爲可以在Yii中添加一個全局選項(實際上很容易)。

0

謝謝!

對於用戶正在瀏覽該主題:

validate()方法 - 在您的自定義AR類擴展 - 位於yii/framework/base/CModel,管線150