2016-11-25 4 views
0

Каждый раз, когда я нажимаю кнопку «Добавить в корзину», старая корзина заменяет новую, а не добавляет новый элемент в старую корзину, и она не обновляет количество, если оно присутствует. Следующее - это коды и изображения.laravel 5.3 сеанс доступа к корзине

мой Cart.php Модель

class Cart{ 

public $spares=null; 
public $totalQuantity=0; 
public $totalPrice=0; 

public function __construct($oldCart){ 
    if($oldCart){ 
     $this->spares=$oldCart->spares; 
     $this->totalPrice=$oldCart->totalQuantity; 
     $this->totalQuantity=$oldCart->totalQuantity; 
    } 
    else{ 
     $this->spares=null; 
    } 

} 

public function add($spare,$id){ 
    $storedItem=['qty' => 0,'price'=>$spare->price,'item'=>$spare]; 
    if($this->spares){ 
     if(array_key_exists($id,$this->spares)){ 
      $storedItem=$this->spares[$id]; 
     } 
    } 
    $storedItem['qty']++; 
    $storedItem['price']= $spare->price*$storedItem['qty']; 
    $this->spares[$id]=$storedItem; 
    $this->totalQuantity++; 
    $this->totalPrice+=$spare->price; 
} 

}

мой маршрут

Route::get('/addToCart/{id}',['uses'=>'[email protected]', 
'as'=>'product.addToCart']); 

мой контроллер

public function getAddToCart(Request $request,$id){ 
    $spares=Spares::find($id); 
    $oldCart=Session::has('cart')? Session::get('cart'):null; 
    $cart=new Cart($oldCart); 
    $cart->add($spares,$spares->id); 

    $request->session()->put('cart',$cart); 
    dd($request->session())->get('cart'); 
    return redirect()->back(); 

} 

Это сеанс изображение, которое я в настоящее время получаю I не знаю Что это за объект Store. я не могу доступ через имя «корзину»

enter image description here

Путь, что я должен получить, как следующий

enter image description here

Это был объектом всей сессии в МДО, как получить доступ только тележка часть? enter image description here

спасибо, что заранее.

ответ

0

Использование session()->push() вместо session()->put()

$request->session()->push('cart', $cart); 

Как Laravel documentationput перепишет проницаемые данные и push добавит новое значение в массив сессии.

+0

nope все же заменяет старый – hEShaN

0

скольжению эта часть

dd($request->session())->get('cart'); 

, поскольку он сбрасывает корзины сессии. Используйте эту функцию следующим образом:

public function AddCart(Request $request, $id) 
{ 

    $product = Product::find($id); 
    if($request->session()->exists('cart')) 
    { 
     $oldCart = $request->session()->get('cart'); 
    } 
    else 
    { 
     $oldCart=false; 
    } 

    $Cart = new Cart($oldCart); 
    $Cart->Add($product, $id); 
    $request->session()->put('cart',$Cart); 
    return redirect()->back(); 
Смежные вопросы