【问题标题】:Laravel Blade - pass variable via an @include or @yieldLaravel Blade - 通过 @include 或 @yield 传递变量
【发布时间】:2017-05-10 21:09:50
【问题描述】:

我需要将变量传递给包含的 Blade 文件。我尝试过这两种方式;但是,两者都没有成功。

  1. 将变量title 传递给包含的文件:

    @section('left')
        @include('modal', ['title' => 'Hello'])
    @stop
    
  2. 使用@yield 并设置部分:

    @section('left')
        @include('modal')
            @section('title')
            Hello
            @stop
    @stop
    

我正在使用 Laravel 4.2。我不知道我想要做的事情是否可行,但我想是的。

【问题讨论】:

  • 你想如何输出它?第一个选项绝对有效。
  • 由于某种原因它不喜欢[] 括号。不过,使用 array('title' => 'hello') 可以。
  • 您使用的是什么 PHP 版本? PHP 5.4 中引入了速记数组。

标签: php laravel laravel-4


【解决方案1】:

根据documentationinclude-方式应该是这样做的:

包括子视图

@include('view.name')

您还可以将数据数组传递给包含的视图:

@include('view.name', array('some'=>'data'))

我的直觉是$title 与嵌套模板中的另一个变量发生冲突。只是为了排除故障,请尝试暂时将其称为其他名称。

【讨论】:

  • 这可行,但由于某种原因它不喜欢[] 括号。 yield 方式如何工作 - 如果它是正确的方式?
  • 对不起,错字。意思是include。至于短数组语法,可能你的php版本不支持短数组语法。你用的是哪个版本?
  • 是的——你是对的!谢谢。这是首选 Laravel 的做事方式吗?即,大量包含和传递变量以重用模板?
  • 这在很大程度上取决于您的用例。对于应该重复的代码,并且本质上是一个 sub 组件并且不包含在每个视图中(fx.模态,特定于页面的导航等),我肯定会使用子视图。
  • 我不确定,但如果你需要这样嵌套,试试['someVar' => view('my.view')]。我更喜欢在@include('viewA', ['subview' => 'viewB'])viewA.blade.php 内部使用@include($subview)。不过只是吐口水。
【解决方案2】:

将数据数组传递给包含的视图

@include('view.name', array('some'=>'data'))

然后在视图/名称文件夹上使用它

{{ $some }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 2015-10-19
    • 2015-06-26
    • 2021-07-06
    • 1970-01-01
    • 2015-06-08
    • 2016-04-12
    • 2022-06-30
    相关资源
    最近更新 更多