非静态方法CController :: createUrl()不应该静态调用yii

时间:2015-10-08 07:48:54

标签: php yii static

对于php版本5.3。这条线很好用。

<?php echo CController::createUrl('/Reload/data')?>

但是当我将我的php更新为5.4时。我正在

非静态方法CController :: createUrl()不应该静态调用,假设$ this来自不兼容的上下文

我需要做些什么才能让它在yii中运行?

2 个答案:

答案 0 :(得分:0)

您需要访问控制器对象。假设您在视图中工作,可以使用$this访问当前控制器对象:

<?php $this->createUrl('/Reload/data')?>

在小部件中,您可以使用$this->controller

<?php $this->controller->createUrl('/Reload/data')?>

如果没有,您可以使用Yii::app()->controller

<?php Yii::app()->controller->createUrl('/Reload/data')?>

答案 1 :(得分:0)

由于您在静态上下文中调用非静态方法,因此即使在PHP 5.3中也无法确定此行如何工作。 CController :: createUrl()实际上引用了$ this ...

无论如何,回到您的要点:在Yii1中,您还可以使用CApplication::createUrl()管理您的URL,并且您的代码中的任何位置都可以使用Application对象。