[英]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.