我有以下规则:
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 :(得分:1)
switch ($attribute) {
一个明显的解决方案......