【问题标题】:Parse error: syntax error, unexpected '__construct' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST)解析错误:语法错误、意外的 '__construct' (T_STRING)、期望函数 (T_FUNCTION) 或 const (T_CONST)
【发布时间】:2019-05-21 17:32:15
【问题描述】:

我有这个问题。当我点击添加到购物车按钮时出现错误:

解析错误:语法错误,意外的“__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;
   }
}

【问题讨论】:

    标签: laravel shopping-cart


    【解决方案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;
        }
    }
    

    【讨论】:

    • 谢谢 我还有一个问题你能帮我吗?你可以在评论中看到它
    【解决方案2】:
    this->$items[$id]=$storedItem;
    

    See,this是关键字,是$this,通过this访问变量时不需要对访问的变量(在本例中为items)做$符号,所以应该永远是:

    $this->items[$id] = $storedItem;
    

    请更好地缩进和组织你的代码,这很混乱,可能不止一个错误。

    【讨论】:

    • 谢谢我还有一个问题,你可以在 cmets 中看到它
    【解决方案3】:

    您的__construct 前面需要有function 这个词,或者更好的是public function

    将行改为:

    public function __construct($oldCart)
    

    在这里阅读:Line no 8

    【讨论】:

    • 谢谢你能帮我解决另一个问题吗?
    • @AngelikaBeňová 是的,我会尽力而为
    • 你可以在评论中看到这个问题
    • 还有问题 Undefined index: item (View: C:\xampp\htdocs\laravel\resources\views\shoppingCart.blade.php)
    • 由于未定义的变量而出现未定义的索引。
    【解决方案4】:

    你应该试试这个:

    <?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;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-22
      • 2021-06-26
      • 1970-01-01
      • 2015-05-26
      • 2012-05-11
      • 2015-11-19
      • 2015-03-09
      • 2019-01-05
      • 1970-01-01
      相关资源
      最近更新 更多