首页 > 解决方案 > 路线 [/add-to-cart] 未定义。(查看:/projects/ProjectWebsite/resources/views/shop/index.blade.php)

问题描述

谁能帮助我,我已经创建了一个基本的购物车,但现在我尝试添加会话以便将产品添加到我的购物车,但是我收到了上面的错误。有谁知道我该如何解决这个问题,谢谢

这是我设置的路线(web.php)

Route::get('/add-to-cart/{id}', 'ProductController@getAddToCart');

这是在控制器页面(productController.php)

<?php

namespace App\Http\Controllers;

use App\Cart;
use App\Product;
use Illuminate\Http\Request;

use App\Http\Requests;
use Session;



class ProductController extends Controller

{
      public function getIndex()
    {


         $products = Product::all();        
         return view('shop.index', ['products' => $products]);

    }

      public function getAddToCart(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('shop.index');

    }


}

这是我的购物车页面 (Cart.php)

<?php

namespace App;

class Cart
{
    public $items = null;
    public $totalQty = 0;
    public $totalPrice = 0;

    public function __construct($oldCart)
    {
        if ($oldCart) {
            $this->items = $oldCart->items;
            $this->totalQty= $oldCart->totalQty;
            $this->totalPrice = $oldCart->totalPrice;
    }
}

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

}

这是我的索引页面(index.php,存储在商店文件夹中)

@section('title')

Checkouts Page

@endsection

@section('content')

@foreach($products->chunk(3) as $productChunk)

<div class="row">

@foreach($productChunk as $product)

<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="./images/image1.png" height="200" width="300"> 
<div class="caption">
<h3>{{ $product->title }}</h3>
<p class="description"> {{ $product->description }} </p>

 <div class="clearfix">
 <div class="pull-left price">£{{ $product->price }}</div>
 <a href="{{ route('/add-to-cart', ['id' => $product->id]) }}" class="btn btn-success pull-right"    role="button">Add to Basket</a>
 </div>
 </div>
  </div>
 </div>


@endforeach
</div>

@endforeach

@endsection

标签: phplaravellaravel-5

解决方案


您正在将路径传递给route()助手,

你应该通过route name。像这样为您的路线命名;

Route::get('/add-to-cart/{id}', 'ProductController@getAddToCart')->name('addCart');

并将名称传递给辅助函数。

{{ route('addCart', ['id' => $product->id]) }}"

那么它应该可以工作。

您也可以使用url()助手而不给路线命名。

检查 laravel 文档;

网址()路线()


推荐阅读