[英]Passing array from view(Blade) to another view(Blade) in laravel
我有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')
我想将javascript链接添加到主布局( main.blade.php
)(如果子布局( index.blade.php
)中存在)
在index.blade.php
添加了代码
$extraJs = array('plugins1.js','plugins2.js');
@section('extraJs')
{{ $extraJs }}
@stop
那么,如果子刀片中存在JavaScript,如何将javascript添加到主布局?
在php中:
<?php
if(isset($extraJs)):
foreach($extraJs as $js):
?>
<script src="assets/js/<?php echo $js ?>" type="text/javascript" />
<?php endforeach; endif; ?>
您可以在main.blade.php
添加一个yield,如下所示:
<!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
如果您添加了另一个不需要使用额外的JavaScript的子视图,Laravel不会抱怨,因为该部分是可选的。
自您提出要求以来,我实际上并不鼓励使用此方法。 肯定有可能在视图树中传递某些内容。 您只需在视图中定义一个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
如您所见,我还将布局中的代码转换为Blade并利用asset()
函数生成绝对URL
注意除了以这种方式进行操作外,还有其他方法。 例如, 查看作曲家或在控制器中定义插件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.