我正在使用URL::to
调用在外发邮件中嵌入一个链接。我这样做的结果是:“baseroot/public/index.php/xxx/yyy
”。
然而,当我拨打同一个电话时,例如,在route
电话中,我会收到“baseroute/xxx/yyy
”。
有什么想法吗?
答案 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/someurl
或http://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,'/'); }