使用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()
方法的文档,它使用了参数引用。但我不知道为什么它在使用第一个代码时会抛出错误,它实际上与第二个代码相同。
你能帮我理解这种情况吗?
谢谢!
答案 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来传递它。