1

我有以下规则:

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}而不是用属性名称替换它,就像在规则中设置消息时一样。

我怎样才能实现我的目标?

--

更新:虽然我已经解决了我的问题(请参阅下面的答案),但如果有人仍然想解决通过规则参数传递元数据的问题,我会为此目的保留问题。

4

1 回答 1

1
switch ($attribute) {

一个明显的解决方案...

于 2013-07-19T11:49:39.353 回答