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


Right way to insert JS or CSS assets in Laravel views

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

我得到错误"加载资源失败:服务器响应了404(未找到)的状态",但我的css和javascript都在公共/css或公共/js文件夹。由于某种原因,它正在寻找public/viewproject/csspublic/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');
}

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

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

确保正确定义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"大多被省略,用于内联脚本。

发生这种情况是因为您使用的是相对于页面的css和js路径。使用绝对路径代替。