Маршрут [/ add-to-cart] не определен. (Просмотр: /projects/ProjectWebsite/resources/views/shop/index.blade.php) - PullRequest
0 голосов
/ 14 апреля 2020

Может кто-нибудь, пожалуйста, помогите мне, я создал корзину c, но сейчас я пытаюсь добавить сеансы, чтобы добавить продукты в мою корзину, однако я получаю ошибку выше. Кто-нибудь знает, как я могу это исправить, спасибо

Это маршрут, который я настроил (веб. 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');

    }


}

это моя страница корзины (Корзина. 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;
}

}

это моя страница индекса (индекс. 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

1 Ответ

0 голосов
/ 14 апреля 2020

Вы передаете путь к помощнику route(),

Вы должны передать имя маршрута . Дайте название вашему маршруту следующим образом:

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

и передайте имя вспомогательной функции.

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

, тогда оно должно работать.

Также вы можете используйте помощник url() без указания имени маршрута.

Чек laravel документы;

url () , route ()

...