我想知道什么是好方法 在我的主刀片中动态包含一个js文件 像这样的模板
<?php
$currentRoute = Route::currentRouteName();
$currentRoute = $currentRoute?$currentRoute:'home';
$currentRoute = explode('.',$currentRoute);
?>
<script src="{{$currentRoute[0]}}.js"></script>
但只是不那么棘手:)
答案 0 :(得分:5)
我过去曾做过类似的事情。 在这里,这是我的“技巧”。
首先,您需要一个顶级控制器类
class MainController extends Controller {
protected static $js_files = [];
protected static $css_files = [];
public static function boot()
{
view()->share('js_files', static::$js_files);
view()->share('css_files', static::$css_files);
parent::boot();
}
}
然后,所有控制器都必须从MainController类继承。
我使用关键字“static ::”而不是“self ::”的原因是因为我想要检索最新的子属性而不是“MainController”属性,它会给我关键字“self ::”
参见http://php.net/manual/en/language.oop5.late-static-bindings.php 在刀片布局中,在头部中执行以下操作:
@foreach($css_files as $src)
<link href="{{$src}}" rel="stylesheet">
@endforeach
在结束身体标签之前
@foreach($js_files as $src)
<script src="{{$src}}"></script>
@endforeach
在每个控制器中,您必须在$ js_files和$ css_files继承的属性中放入所有js / css的源。
如果你想只为一条路线包含一个JS / CSS,你可以直接在方法中添加文件的来源。
瞧!