Laravel 5.2:如何在另一个子视图的父视图的子视图中获取变量?

时间:2016-06-30 13:39:55

标签: php laravel laravel-5.2 laravel-blade

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

userController.php

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

master.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>

3 个答案:

答案 0 :(得分:3)

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

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

然后:

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

答案 1 :(得分: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)

答案 2 :(得分:0)

您应该使用视图编辑器。

View Composer

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

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