【问题标题】:Laravel 5.2 : How to get a variable in a subView of a parentView from another subView?Laravel 5.2:如何从另一个子视图获取父视图的子视图中的变量?
【发布时间】:2016-11-02 15:38:42
【问题描述】:

下面是我的视图和控制器,我希望 $name 变量可以在包含在主视图中的导航栏视图中访问。有人知道解决办法吗?

userController.php

public function index($var){
    $u_array = $var;
    $name = $u_array->name;
    return view('index',compact(name));
}

ma​​ster.blade.php

@include('navbar')
<section class="main-container">
    @yield('content')
</section>

index.blade.php

@extends('master')
@section('content')
    <h2>{{$name}}</h2>
@endsection

navbar.blade.php

<h1>{{$name}}</h1>

【问题讨论】:

  • {{name}} 是否在当前位置显示任何内容?
  • 是的,它正在显示数据库中的名称。
  • 删除了我的答案,因为它对你没有帮助。
  • 也许在导航中打开 然后从那里调用数据库。希望你能解决
  • 在这里,请参阅您的案例的this image,在我的本地计算机上工作。这和你上面的不一样吗?

标签: php laravel laravel-5.2 laravel-blade


【解决方案1】:

将变量传递给 master.blade 然后 navbar.blade:

@extends('master', ['name' => $name]) //compact('name')

然后:

@include('navbar', ['name' => $name]) //compact('name')

【讨论】:

  • @extends('master', ['name' => $name]) //compact('name') 然后:@include('navbar', ['name' => $name ]) //compact('name') 起作用了。
  • 因为我不想使用 View::share 这将使其成为全球性
【解决方案2】:

您可以在索引视图中使用@section,在导航栏视图中使用@yield

index.blade.php

@extends('master')
@section('content')
    <h2>{{$name}}</h2>
@endsection
@section('nav')
    <h1>{{$name}}</h1>
@endsection

navbar.blade.php

@yield(nav)

【讨论】:

  • 这正是我想做的。
【解决方案3】:

您应该为此使用视图编辑器。

View Composer

view()->composer('master', function ($view) {
  $u_array = $var;
  $name = $u_array->name;
  $view->with(compact(name));
});

如果对您的具体问题有更多解释,我可能会帮助您找到更好的选择。

【讨论】:

  • 我已将名称变量从控制器传递给索引视图,我需要在导航栏视图中通过刀片模板引擎将其作为名称变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多