med*_*ock 7 php laravel laravel-4
我的app/config/app.php有
'url' => 'http://dev.domain.com/something/somethingElse'
Run Code Online (Sandbox Code Playgroud)
然后我有一个可以从应用程序和工匠命令调用的函数.但URL::route('myRoute')返回不同的结果.当从应用程序调用它返回时http://dev.domain.com/something/somethingElse/myRoute,但在artisan命令中http://dev.domain.com/myRoute.
URL::to 有相同的行为.
注意:我没有为可能覆盖全局环境的其他环境定义任何其他app.php文件.
任何想法为什么会这样?谢谢!
小智 10
Laravel生成的URL由许多部分组成:
http://,https://,等.dev.domain.com,localhost,等.something/somethingElseWeb服务器上的子目录)myRoute,(Laravel路线参数)然后连接这些部分以形成URL.
最终,Laravel使用$_SERVER请求变量生成URL .函数prepareBaseUrl()in Symfony\Component\HttpFoundation\Request最终用于确定URL 的基本部分.
当您通过Web浏览器发出请求时,请求将转到~/public/index.php必要的$_SERVER变量,并使用正确的信息填充Laravel以填充URL 的基本部分.
但是,当您在命令行上使用Artisan发出请求时,请求将转到~/artisan脚本.这意味着$_SERVER变量不会以相同的方式填充,并且Laravel无法确定URL 的基本部分; 相反,它返回一个空字符串''.
根据我的发现,看起来Laravel团队没有任何兴趣使应用程序能够在子目录中开箱即用,例如Bugfix:子文件夹的域路由.
我最终以@medowlock描述的方式解决了我将从命令行调用的脚本,例如:
Config::get('app.url') . URL::route('route.name', ['parameter'=>'value'], false)
这样可以将应用程序URL的设置app/config/app.php和相对 URL路径.
如果使用Laravel 4.2,则可以调用该URL::forceRootUrl函数来明确定义laravel应用程序的根URL.
URL::forceRootUrl( Config::get('app.url') );
Run Code Online (Sandbox Code Playgroud)
URL::to在强制使用根URL后,调用将在您的应用配置文件中使用URL定义.
不幸的是,这在Laravel 4.1或Laravel 4.0中不可用
| 归档时间: |
|
| 查看次数: |
7208 次 |
| 最近记录: |