在Laravel视图中插入JS或CSS资源的正确方法

时间:2014-08-06 00:59:12

标签: php laravel assets

我是laravel的初学者,遇到了一个非常复杂的问题。我正在创建一个带有参数的路由,这些参数将数据传递给控制器​​。到目前为止相当简单。但是一旦我在控制器中的函数showProject($ id)返回我提供的View,就不会加载位于公共文件夹中的CSS / Javascript。这仅仅是我提供路线参数的情况,我的css和javascript似乎被路由到不同的位置,因此无法加载我的应用程序。

我收到错误"无法加载资源:服务器响应状态为404(未找到)"但是我的css和javascript都在public / css或public / js文件夹中。出于某种原因,它正在寻找 public / viewproject / css public / viewproject / js 而不是public / js和public / css。为什么会这样?

Route.php

Route::get('viewProject/{id?}', 'ProjectController@showProject');

ProjectController.php

public function showProject($id){
  Some code ...

 return View::make('viewproject');
}

3 个答案:

答案 0 :(得分:3)

您可能使用相对路径(例如css/my.css),因此当您在子目录中时,路径无效。使用CSS和JS的绝对路径(例如/css/my.css)。

这不是laravel特有的,任何网站都是如此。

答案 1 :(得分:2)

确保正确定义CSS和JS文件。使用HTML的正确方法是

<link rel="stylesheet" href="{{ asset('css/style.css') }}">
<script type="text/javascript" src="{{ asset('js/script.js') }}"></script>

或使用方法

{{ HTML::style('css/style.css', ['rel' => 'stylesheet']); }}
{{ HTML::script('js/script.js', ['type' => 'text/javascript']); }}

请注意,type="text/javascript"大部分都被省略并用于内联脚本。

答案 2 :(得分:0)

这种情况正在发生,因为您正在使用相对于页面的css和js路径。改为使用绝对路径。