2013-07-19 71 views
1

我有以下規則:定製Yii的統治PARAM

array('sites_conhecimento_regiao,facilidade_conhecimento_regiao', 'verificarOpcoesDoUsoDeInternetConhecimentoDaRegiao', 'campo'=>'{attribute}'), 

它調用運行驗證功能:

public function verificarOpcoesDoUsoDeInternetConhecimentoDaRegiao($attribute, $params) { 
    switch ($params['campo']) { 
     case 'sites_conhecimento_regiao': 
      $mensagem = 'Informe os sites que utilizou para a sua pesquisa.'; 
      break; 
     case 'facilidade_conhecimento_regiao': 
      $mensagem = 'Informe se teve facilidade ao obter as informações.'; 
      break; 
    } 

    if (isset($this->conhecimento_regiao)) { 
     if (($this->$attribute === '') && ($this->conhecimento_regiao['conhecimento_regiao_internet'] === '1')) { 
      $this->addError($attribute, $mensagem); 
     } 
    } 
} 

我就是這麼做的重複使用狀況,核心這兩個領域的驗證。現在我想驗證Yii在哪個字段調用該函數。我嘗試使用$params,但它返回字符串{attribute},而不是將其替換爲屬性的名稱,就像在規則中設置消息時一樣。

我該如何實現我的目標?

-

更新:雖然我已經解決了我的問題(見下文回答),如果有人還是要解決通過元數據通過規則的參數的問題,我離開開爲此目的的問題。

+0

它呼籲$屬性功能。這可能是有用的http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/ – ineersa

回答

1
switch ($attribute) { 

一個顯而易見的解決方案......