2015-10-14 48 views
2

在我的本地开发中,我遇到了我的应用程序使用相对路径的问题, /css/style.css更改整个应用程序的默认URL或路径?

这样做通常很好,因为我可以在我的开发机器上配置虚拟主机,例如localhost.foo,以便将相对路径解析为localhost.foo/css/style.css

在我目前的情况下,我无法编辑主机文件来设置开发域,以便到域的相对路径不再工作。我的开发网址看起来像localhost/projectfoo/public

因此,该应用程序的作品,它应参考localhost/projectfoo/public/css/style.css。根据代码中的相对路径,它现在引用locahost/css/style.css,并且在那里显然不会找到请求的文件。

有没有办法配置laravel,在一种情况下使用localhost/projectfoo/public作为URL,在另一种情况下使用标准?

+1

设置一次,如果它仅仅是对CSS和脚本文件,你可能想使用'' – Jan

回答

0

Laravel有一个辅助函数asset它会根据您的config app.url值为相对路径生成完整的URL。

例如,如果app.urlhttp://localhost

您认为把{{ asset("css/style.css") }}和Laravel将它转换为http://localhost/css/style.css

所以你的情况,所有你需要做的是改变app.urlhttp://localhost/public,然后开始使用即你的视图中的asset方法代替相对路径。

更重要的是,新的环境变量添加到您的.env文件(请务必把它.env.example以及)称为APP_URL,例如

APP_URL=http://localhost 

然后在config/app.php其设置为:

'url' => env('APP_URL'), 

这样,你只需要每环境

+0

在我的本地机器上,足以将所有路径更改为'{{asset('/ path/to/foo')',现在它可以工作。必须检查它是如何在其他environements。 – jerik

+0

也适用于其他环境。所以currentlz我不需要改变'config/app.php'中的'url'。对我来说,它只是在刀片中使用'asset()'。 – jerik

+0

@ jerik很高兴听到这一点 – andrewtweber

2

您可以随时添加在您的配置文件的新条目,让在config/app.php

// this is the one that comes with laravel 
'url' => 'http://localhost', 

// this is the one that you can define 
'url_public' => 'http://localhost/something_else/public' 

说,然后在您的视图一样使用它:

<link href="{{ config('app.url_public') }}/style/style.css" rel="stylesheet"> 
+0

为什么他们会添加另一个配置值而不是只改变'url'?它配备了Laravel,因为它的目的是要改变 – andrewtweber

+0

当然,它的目的是改变。我理解问题最后一段的方式是,他希望有两个不同的情况。因此,作为一般方法,您可以使用Laravel随附的(无论是否更改它),还可以使用您自己定义的一个。鉴于他在环境中的制约因素,他是如何工作的,我们不(至少我)不知道。 –

+0

好吧,这是有道理的。尽管我将这两种情况理解为2个独立的环境。在这种情况下,我认为将URL添加到'.env'文件并根据环境进行调整会更有意义。 – andrewtweber