将视图(刀片)中的数组传递到laravel中的另一个视图(Blade)

时间:2015-01-01 06:19:07

标签: php 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')

如果存在于子布局(main.blade.php

,我想将javascript链接添加到主布局(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; ?>

2 个答案:

答案 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变量,它就可以在布局中的任何位置使用。

index.blade.php

<?php $extraJs = array('plugins1.js','plugins2.js'); ?>

main.blade.php

@if(isset($extraJs))
    @foreach($extraJs as $js)
        <script src="{{ asset('assets/js/'.$js) }}" type="text/javascript" />
    @endforeach
@endif

如您所见,我还将布局中的代码转换为刀片,并使用asset()函数生成绝对URL

注意而不是这样做还有其他方法。例如View composers或定义控制器中的插件。