我是laravel的初学者,遇到了一个非常复杂的问题。我正在创建一个带有参数的路由,该参数将数据传递给控制器。到目前为止相当简单。但是,一旦控制器中的函数showProject($id)返回我提供的View,位于公共文件夹中的CSS/Javascript就不会被加载。这只是当我提供参数路由的情况下,我的css和javascript似乎被路由到不同的位置,从而无法在我的应用程序加载。
我得到错误"加载资源失败:服务器响应了404(未找到)的状态",但我的css和javascript都在公共/css或公共/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');
}
您可能使用相对路径(例如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路径。使用绝对路径代替。