我有以下规则:
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}
而不是用属性名称替换它,就像在规则中设置消息时一样。
我怎样才能实现我的目标?
--
更新:虽然我已经解决了我的问题(请参阅下面的答案),但如果有人仍然想解决通过规则参数传递元数据的问题,我会为此目的保留问题。