我有laravel刀片模板main.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>@yield('title','My Site')</title>
</head>
<body>
@yield('container','Content area')
{{ HTML::script('assets/js/jquery-1.9.0.js') }}
</body>
</html>
我将其扩展为另一个视图index.blade.php
@extend('main')
如果存在于子布局(main.blade.php
)
index.blade.php
)
在index.blade.php
$extraJs = array('plugins1.js','plugins2.js');
@section('extraJs')
{{ $extraJs }}
@stop
那么,如果存在于子刀片中,如何将javascript添加到主布局?
在php中:
<?php
if(isset($extraJs)):
foreach($extraJs as $js):
?>
<script src="assets/js/<?php echo $js ?>" type="text/javascript" />
<?php endforeach; endif; ?>
答案 0 :(得分:0)
您只需在main.blade.php
中添加收益率,就像这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>@yield('title','My Site')</title>
</head>
<body>
@yield('container','Content area')
{{ HTML::script('assets/js/jquery-1.9.0.js') }}
@yield('javascripts')
</body>
</html>
然后,在您的子布局中,为您添加一个部分,就像您一样。例如:
@section('javascripts')
@foreach($scripts as $script)
{{ HTML::script('ets/js/' . $script) }}
@endforeach
@stop
如果您添加另一个不需要使用额外javascripts的子视图,Laravel不会抱怨,因为该部分是可选的。
答案 1 :(得分:0)
我不会真的鼓励这种方法但是因为你问过。绝对可以传递一些东西&#34; up&#34;在视图树中。您只需在视图中定义一个PHP变量,它就可以在布局中的任何位置使用。
<?php $extraJs = array('plugins1.js','plugins2.js'); ?>
@if(isset($extraJs))
@foreach($extraJs as $js)
<script src="{{ asset('assets/js/'.$js) }}" type="text/javascript" />
@endforeach
@endif
如您所见,我还将布局中的代码转换为刀片,并使用asset()
函数生成绝对URL
注意而不是这样做还有其他方法。例如View composers或定义控制器中的插件。