自定义Yii的规则参数

时间:2013-07-19 10:47:00

标签: php validation yii

我有以下规则:

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

我如何实现目标?

-

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

1 个答案:

答案 0 :(得分:1)

switch ($attribute) {

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