Laravel - 如何将变量传递给布局局部视图

时间:2016-07-17 07:23:24

标签: php laravel

我在主布局中有局部视图,这是导航栏。我有一个变量$userApps。此变量检查用户是否已启用应用程序(true),如果已启用,则我希望在导航栏中显示应用程序的链接。

主页扩展了master.layout,其中包括partials.navbar

我在navbar.blade.php中的代码是:

@if ($userApps)
    // display link
@endif

但是我得到未定义的变量错误。如果我在带有控制器的普通视图中使用它,它在我声明变量并将控制器路由到视图后工作正常。我不认为我可以将控制器放到布局中,因为我无法将控制器路由到局部视图,所以我如何优雅地做到这一点?

6 个答案:

答案 0 :(得分:10)

您使用的是什么版本的Laravel?应该是这样的:

@include('partials.navbar', ['userApps' => $userApps])

只是为了测试我在本地做了它并且它有效:

  

routes.php文件

Route::get('/', function () {
    // passing variable to view
    return view('welcome')->with(
        ['var' => true]
    );
});
  

资源/视图/ welcome.blade.php

// extanding layout
@extends('layouts.default')
  

资源/视图/布局/ default.blade.php

// including partial and passing variable
@include('partials.navbar', ['var' => $var])
  

资源/视图/分音/ navbar.blade.php

// working with variable
@if ($var == 'testing')
  <h1>Navbar</h1>
@endif

所以问题必须在其他方面......检查路径和变量名称。

答案 1 :(得分:3)

其他答案对我不起作用,或者似乎仅对旧版本有效。对于较新的版本(例如Laravel 7.x),语法如下。

在父视图中:

@include('partial.sub_view', ['var1' => 'this is the value'])

在子视图中:

{{ $var1 }}

答案 2 :(得分:0)

这种方法非常简单:

父视图中:

@include('partial.sub_view1', [$var1='This is value1'])

子视图中:

{{ $var1 }}

答案 3 :(得分:0)

@include('您的视图地址',array('视图中的变量,例如:id = $ something'=>'此变量的值'))

答案 4 :(得分:0)

我已经回答了所有问题,但是下面是最好的方法,因为您也可以在serviceProvider中运行查询。

您需要创建单独的服务,也可以使用AppServiceProvider

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::composer('layouts.admin-layout', function ($view) {
            $view->with('name', 'John Doe');
        });
    }
}

在您的布局中

{{$name}}

答案 5 :(得分:0)

您可以使用视图编辑器将变量发送到局部视图。 查看 laravel.com 上关于视图作曲家的 laravel 文档。 您也可以查看以下链接以帮助您解决此问题。 https://scotch.io/tutorials/sharing-data-between-views-using-laravel-view-composers