url :: to(xxx / yyy)根据上下文返回不同的结果

时间:2014-04-18 10:49:38

标签: laravel-4

我正在使用URL::to调用在外发邮件中嵌入一个链接。我这样做的结果是:“baseroot/public/index.php/xxx/yyy”。

然而,当我拨打同一个电话时,例如,在route电话中,我会收到“baseroute/xxx/yyy”。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

URL::to的来源位于。{ http://laravel.com/api/source-class-Illuminate.Routing.UrlGenerator.html#76-98

(从http://laravel.com/api/class-Illuminate.Routing.UrlGenerator.html链接)。

我建议您在副本中添加调试打印,并查看$this->getScheme()$this->getRootPath()的值。这些必然是差异的根源,显然是由不同的this对象引起的。

答案 1 :(得分:0)

我遇到一个非常类似的问题,URL::to('user/123')在访问主页与其他网页时返回的值不正确。经过一些调查后, 在我的案例中,这是请求的网址中区分大小写(!)的问题。我希望它与你的神秘案件有某种关系。

有关我的案例的更多信息:URL:to('user/123')给了我不同的结果,我是否访问了http://localhost/ MyApp /public/someurlhttp://localhost/ Myapp /public/someurl。在前者中,它给出了正确的结果http://localhost/MyApp/public/user/123,而后者给出了http://localhost/user/123错误的结果。

对于未来的Laravel考古学家来说,从我的调查中,

来自这里,不那么重要的笔记 。我希望我不是在胡说八道。我是Laravel的新手,在Windows机器上使用本地Laravel 4安装+ WAMP。

  • UrlGenerator的{​​{1}}方法使用to()。后者使用$root = $this->getRootUrl($scheme);,其中请求为$this->request->root();
  • \Symfony\Component\HttpFoundation\Request确实默认为错误的值,例如Request::root()在使用不正确的案例访问某些人时{。}}。
  • 罪魁祸首是http://localhost(在vendor \ symfony \ http-foundation \ Symfony \ Component \ HttpFoundation \ Request.php中)。它的Symfony\Component\HttpFoundation\Request调用getBaseUrl(),最后执行了将requestUri与baseUrl进行比较的实际逻辑。
  • 对于仍然关注的少数考古学家来说,在我的情况下prepareBaseUrl()是/MyApp/public/index.php而$baseUrl是/ Myapp / public / someurl,遗憾地导致了代码不满足此条件:

    if($ baseUrl&& false!== $ prefix = $ this-> getUrlencodedPrefix($ requestUri,dirname($ baseUrl))){ return rtrim($ prefix,'/'); }