Laravel:如何将变量传递给我的基本布局

Laravel: how to pass a variable to my basic layout

我正在尝试将一个变量传递给我的基本布局。这是因为我在所有页面中都需要它。 我认为在我的 BaseController

上写类似的东西
protected function setupLayout()
{
    if ( ! is_null($this->layout))
    {
        $footertext = MyText::where('status', 1);
        $this->layout = View::make($this->layout, ['footertext' =>$footertext ]);
        }
    }
}

我认为在我的 main.blade.php 上写类似的东西是可行的。

 {{ $footertext }}.

相反,我遇到了这个错误,

未定义变量:footertext

经过两个小时的环顾四周...我没有找到任何解决方案。 欢迎任何帮助。

有时我们需要将数据从控制器传递到 laravel 中的视图,例如使用数据库查询、select 选项等等。 laravel 中的内置函数简单易行。我们可以使用 laravel 中的 with() 轻松地从控制器发送数据以查看。还有更多方法可以发送或传递数据以从控制器查看。我正在描述如何将数据表单控制器传递到 laravel.

中查看的一些简单方法

1.传递一个数组:

$data = array(
    'name'  => 'Rakesh',
    'email' => 'sharmarakesh395@gmail.com'
);

return View::make('user')->with($data);

//Accesing $data on view :-

{{$data}}
{{$data['email']}}

2。使用查询:

function view() {
  $q = Model::where('name', '=', 'Foo')->first(); 
  $users = Model::order_by('list_order', 'ASC')->get();
  return $view->with('users', $users)->with('q', $q);
}
//Accesing on view :-
{{ $q->name }}

希望对你有帮助:)

不久前我也在尝试做同样的事情。

如果您使用的是 Laravel 5,您可以在 app/Providers 中编辑 AppServiceProvider.php 并为此布局注册一个提供商,例如:

public function boot()
{
  view()->composer('my.layout', function($view) {
    $myvar = 'test';
    $view->with('data', array('myvar' => $myvar));
  });
}

现在如果你使用 Laravel 4 我认为它更简单。在 app/filters.php:

View::composer('my.layout', function ($view) {
  $view->with('variable', $variable);
});

在这两种方式中,您传递的任何变量都将可用于扩展主模板的所有模板。

参考文献:

https://laracasts.com/discuss/channels/general-discussion/laravel-5-pass-variables-to-master-template https://coderwall.com/p/kqxdug/share-a-variable-across-views-in-laravel?p=1&q=author%3Aeuantor

对于laravel 5.3我在AppServiceProvider.php里面用app/Providers

public function boot()
{
    view()->composer('layouts.master', function($view)
    {
        $view->with('variable', 'myvariable');
    });
}

参考: https://laracasts.com/discuss/channels/general-discussion/laravel-5-pass-variables-to-master-template

*包含专用 Class

在Laravel 5.6中none这些方法都行得通。 AppServiceProvider:

public function boot()
{
    View::share('key', 'value');
}

其中View是门面Illuminate\Support\Facades\View