Laravel 5.1 - 显示我的 session 购物车
Laravel 5.1 - Show my session cart
为了在 header 菜单中显示我的购物车 session 中的产品,我将 session "cart" 从我的控制器传递到我的视图,如下所示:
前端控制器:
public function index()
{
$cart = \Session::get('cart');
return view('index',compact('cart'));
}
Routes.php
Route::get('/','FrontController@index');
我的布局principal.blade.php(效果很好)
@foreach ($cart as $item)
all items of my session cart
@endforeach
我的问题:
有一种方法可以将购物车 session 直接传递到我的所有视图??或者我必须始终为每个视图传递购物车 Session?我有大约 24 个视图,我必须像我的视图主页一样进行每个视图 index.php ??
感谢您的帮助!
在 AppServiceProvider
中添加到 boot
方法
view()->share('cart', \Session::get('cart'));
对于 Laravel 的 View Composers 来说,这是一份完美的工作。
创建一个新的服务提供者,我们称之为ComposerServiceProvider
:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
// Share $_cart to every view
view()->composer('*', function ($view) {
view()->share('_cart', \Session::get('cart'));
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
不要忘记在 config/app.php
内添加服务提供商。您还可以仅通过替换 *
通配符将变量组合到特定视图。
您可能注意到我在变量中添加了下划线前缀 _cart
。我这样做是为了让您知道该变量是共享的,而不是由控制器传递的。
为什么要从控制器传递 session 数据?会议随处可见。这应该可以在不从控制器传递任何东西的情况下工作:
@foreach (session()->get('cart') as $item)
all items of my session cart
@endforeach
为了在 header 菜单中显示我的购物车 session 中的产品,我将 session "cart" 从我的控制器传递到我的视图,如下所示:
前端控制器:
public function index()
{
$cart = \Session::get('cart');
return view('index',compact('cart'));
}
Routes.php
Route::get('/','FrontController@index');
我的布局principal.blade.php(效果很好)
@foreach ($cart as $item)
all items of my session cart
@endforeach
我的问题:
有一种方法可以将购物车 session 直接传递到我的所有视图??或者我必须始终为每个视图传递购物车 Session?我有大约 24 个视图,我必须像我的视图主页一样进行每个视图 index.php ??
感谢您的帮助!
在 AppServiceProvider
boot
方法
view()->share('cart', \Session::get('cart'));
对于 Laravel 的 View Composers 来说,这是一份完美的工作。
创建一个新的服务提供者,我们称之为ComposerServiceProvider
:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
// Share $_cart to every view
view()->composer('*', function ($view) {
view()->share('_cart', \Session::get('cart'));
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
不要忘记在 config/app.php
内添加服务提供商。您还可以仅通过替换 *
通配符将变量组合到特定视图。
您可能注意到我在变量中添加了下划线前缀 _cart
。我这样做是为了让您知道该变量是共享的,而不是由控制器传递的。
为什么要从控制器传递 session 数据?会议随处可见。这应该可以在不从控制器传递任何东西的情况下工作:
@foreach (session()->get('cart') as $item)
all items of my session cart
@endforeach