CHtml :: resolveName()不能通过引用传递参数2

时间:2012-09-14 03:48:11

标签: php yii

使用CHtml::resolveName时收到此错误消息:无法通过引用传递参数2。 这是我简单的测试代码:

<?php 
class TestController extends CController {
    public function test() {
      var_dump(CHtml::resolveName($myModels, 'someAttribute');
      exit;
    }
}

当我路由到此操作时,它总是抛出错误。但是,当我像这样更改代码时

<?php 
class TestController extends CController {
    public function valid($model, $attribute) {
        return CHtml::resolveName($model, $attribute);
    }

    public function test() {
        var_dump($this->valid);
        exit;
    }
}

有效! 我已经阅读了Yii框架中CHtml::resoveName()方法的文档,它使用了参数引用。但我不知道为什么它在使用第一个代码时会抛出错误,它实际上与第二个代码相同。 你能帮我理解这种情况吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

我认为你错过了var_dump函数的一个结束括号。

<?php 
class TestController extends CController {
    public function test() {
      var_dump(CHtml::resolveName($myModels, 'someAttribute'));
      exit;
    }
}
?>

还有一件事, 您没有正确使用函数CHtml::resolveName。它不传递变量名,传递其引用。 Check Here

<?php 
    class TestController extends CController {
        public function test() {
          $attribute = 'someAttribute';
          var_dump(CHtml::resolveName($myModels, &$attribute));
          exit;
        }
    }
    ?>

答案 1 :(得分:1)

只需像这样重写:

CHtml::resolveName($myModels, $dummy='someAttribute')

这是因为传递给函数调用的属性名称是变量引用。 $ dummy ='someAttribute'创建临时变量$ dummy来传递它。