Laravel,Singleton-如何向所有控制器发送数据?
我在做购物网站。我制作了购物车模型,它是单体的。我的购物车始终存在于会话中(无论用户是否登录)。现在我必须每次调用每个控制器和操作getInstance来检查是否有键“cart”。 是否有可能对所有视图自动执行此操作 以下是我的单身汉代码:Laravel,Singleton-如何向所有控制器发送数据?,laravel,session,singleton,Laravel,Session,Singleton,我在做购物网站。我制作了购物车模型,它是单体的。我的购物车始终存在于会话中(无论用户是否登录)。现在我必须每次调用每个控制器和操作getInstance来检查是否有键“cart”。 是否有可能对所有视图自动执行此操作 以下是我的单身汉代码: class Cart { private $cartModel; private static $instance; private function __construct() { $this->cartModel = new CartMo
class Cart
{
private $cartModel;
private static $instance;
private function __construct()
{
$this->cartModel = new CartModel();
$cart = Session::get('cart');
if ($cart == null) {
Session::put('cart', array());
}
}
private function __clone()
{
}
public static function getInstance()
{
if (self::$instance === null) {
self::$instance = new Cart();
}
return self::$instance;
}
public function get(){
return Session::get('cart');
}
}
例如,它在控制器和动作中的外观:
class StoreController extends Controller
{
public function mainSite()
{
$cart=Cart::getInstance()->get();
return View('zoo');
}
public function showCategory($categoryName)
{
$cart=Cart::getInstance()->get();
$category = new Category();
$categoryId = (int)$category->getCategoryId($categoryName);
$subCategories = Subcategory::where('category_id', $categoryId)->get();
return View('zoo-category', ['subCategories' => $subCategories, 'categoryName' => $categoryName]);
}
public function showSubcategory()
{
$cart=Cart::getInstance()->get();
}
我必须一直这样做:$cart=cart::getInstance()->get();
有可能只做一次吗?您可以利用Laravel的依赖注入。将类绑定到IoC容器,您可以通过IoC容器访问它,也可以让Laravel以几种不同的方式将其自动注入控制器
阅读更多信息:您可以利用Laravel的依赖注入。将类绑定到IoC容器,您可以通过IoC容器访问它,也可以让Laravel以几种不同的方式将其自动注入控制器
阅读更多信息:将其添加到基本控制器的构造函数中,以便在每个控制器方法上调用它
// app/Http/Controllers/Controller.php
protected $cart;
public function __construct()
{
$this-> cart = Cart::getInstance()->get();
}
但我真的觉得你的单身班没什么意义。它所做的只是在未定义购物车时将购物车设置为空数组。另外
$this->cartModel=new cartModel()代码>是否使用过它?将它添加到基本控制器的构造函数中,以便在每个控制器方法上调用它
// app/Http/Controllers/Controller.php
protected $cart;
public function __construct()
{
$this-> cart = Cart::getInstance()->get();
}
但我真的觉得你的单身班没什么意义。它所做的只是在未定义购物车时将购物车设置为空数组。另外$this->cartModel=new cartModel()代码>是否曾经使用过此功能?我希望始终存在。作为一个用户,你可以在不登录的情况下将产品添加到购物车中,但是当你想订购某物并付款时,你必须注册并登录。登录后,您之前创建的购物车将添加到您的帐户(会话用户)。你是对的。cartModel永远不会被使用:P.我的错误。谢谢你的回答!我想永远存在。作为一个用户,你可以在不登录的情况下将产品添加到购物车中,但是当你想订购某物并付款时,你必须注册并登录。登录后,您之前创建的购物车将添加到您的帐户(会话用户)。你是对的。cartModel永远不会被使用:P.我的错误。谢谢你的回答!谢谢你的建议。我写了整个子项目,它也很有效。谢谢你的建议。我写了整个子主题,它也很有效。