我有这个问题。当我单击添加到购物车按钮时,出现错误:
解析错误:语法错误,意外的'__construct'(T_STRING), 期望函数(T_FUNCTION)或const(T_CONST)
我是Laravel的新手,我真的不知道该做什么,
这是我添加到购物车上的按钮上的代码:
<a href="{{route('get.addToCart',[$product->id])}}" class="cart-btn">Add to cart</a>
这是我的路线:
Route::get('add-to-cart/{id}', 'WebController@addToCart')->name('get.addToCart');
我在webcontroller中拥有的
public function addToCart(Request $request, $id){
$product = Product::find($id);
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->add($product,$product->id);
$request->session()->put('cart',$cart);
dd($request->session()->get('cart'));
return redirect()->route(get.product);
}
这是我的cart.php
<?php
namespace App;
class Cart{
public $items=null;
public __construct($oldCart){
if($oldCart){
this->$items=$oldCart->items;
}
}
public function add($item,$id){
$storedItem= ['name'=>$item];
if(this-> $items)
{
if(array_key_exists($id, this->$items)){
$storedItem=this->$items[$id];
}
}
this->$items[$id]=$storedItem;
}
}
答案 0 :(得分:1)
在__construct
之前缺少 function 关键字<?php
namespace App;
class Cart{
public $items=null;
public function __construct($oldCart){
if($oldCart){
$this->items=$oldCart->items;
}
}
public function add($item,$id){
$storedItem= ['name'=>$item];
if($this->items)
{
if(array_key_exists($id, $this->items)){
$storedItem=$this->items[$id];
}
}
$this->items[$id]=$storedItem;
}
}
答案 1 :(得分:0)
this->$items[$id]=$storedItem;
See,这是一个关键字,它是$ this,并且当通过this访问变量时,无需对访问变量(在本例中为item)执行$符号,因此应该始终为:>
$this->items[$id] = $storedItem;
请更好地缩进和组织代码,这非常混乱,并且可能存在多个错误。
答案 2 :(得分:0)
您的__construct
前面必须有单词function
,或者最好是public function
将行更改为:
public function __construct($oldCart)
在此处阅读:Line no 8
答案 3 :(得分:0)
您应该尝试以下操作:
<?php
namespace App;
class Cart{
public $items=null;
public function __construct($oldCart){
if($oldCart){
this->$items=$oldCart->items;
}
}
public function add($item,$id){
$storedItem= ['name'=>$item];
if(this-> $items)
{if(array_key_exists($id, this->$items)){
$storedItem=this->$items[$id];
}
}
this->$items[$id]=$storedItem;
}
}