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');
});
}
*包含专用 Class
在Laravel 5.6中none这些方法都行得通。
AppServiceProvider
:
public function boot()
{
View::share('key', 'value');
}
其中View
是门面Illuminate\Support\Facades\View
我正在尝试将一个变量传递给我的基本布局。这是因为我在所有页面中都需要它。 我认为在我的 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');
});
}
*包含专用 Class
在Laravel 5.6中none这些方法都行得通。
AppServiceProvider
:
public function boot()
{
View::share('key', 'value');
}
其中View
是门面Illuminate\Support\Facades\View