2015-07-27 23:01:57 12194次浏览 1条回答 0 悬赏 10 金钱

比如Url::canonical();会出现

Error (#8)

An internal server error occurred.
The above error occurred while the Web server was processing your request.

Please contact us if you think this is a server error. Thank you.

还有urlManage怎么获取当前请求的Url,带完整参数的。init里只能使用urlManage了

  • 回答于 2015-07-28 09:08 举报

    获取当前请求的url(浏览器中显示的url):

    \Yii::$app->request->getAbsoluteUrl();
    

    但是,如果是要获得路由,还是得用canonical,不过你的那个错误需要查看下debug日志,看看什么原因,服务器内部错误应该是你代码有问题。

    2 条回复
    回复于 2015-07-28 09:40 回复

    看了一下错误是:
    Trying to get property of non-object

    public static function canonical()
    {
            $params = Yii::$app->controller->actionParams;//这一行出错
            $params[0] = Yii::$app->controller->getRoute();
     
            return Yii::$app->getUrlManager()->createAbsoluteUrl($params);
    }
    
    回复于 2015-07-28 10:12 回复

    哦,那是因为init方法中没有初始化Yii::$app->controller,你在自己的xxController::init里面这样调:

    function init() {
    parent::init();
    $ctr = Url::canonical();
    }
    

    先调用parent::init完成controller的初始化,然后再获取controller。

您需要登录后才可以回答。登录 | 立即注册
haloz
助理

haloz

注册时间:2015-07-23
最后登录:2018-06-15
在线时长:8小时6分
  • 粉丝0
  • 金钱60
  • 威望0
  • 积分140

热门问题