1

使用时收到此错误消息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;
    }
}

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

4

2 回答 2

2

我认为您缺少一个 var_dump 函数的右括号。

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

还有一件事,您没有CHtml::resolveName正确使用该功能。它不传递变量名,传递它的引用。 在这里检查

<?php 
    class TestController extends CController {
        public function test() {
          $attribute = 'someAttribute';
          var_dump(CHtml::resolveName($myModels, &$attribute));
          exit;
        }
    }
    ?>
于 2012-09-14T05:41:04.640 回答
1

只需像这样重写:

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

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

于 2013-11-13T02:54:43.030 回答