【发布时间】:2020-06-11 23:46:04
【问题描述】:
我正在尝试为一个大学项目开发一个基于 Laravel 的电子商务,没什么花哨的,它不会发布。
前提:我是一名学生和初学者,对于我的任何错误,我深表歉意。我正在使用 Laravel 6.15。
我已经制作了一个非常基本的 HTML+CSS 模板并为电子商务构建了一个自定义数据库,加载了一些记录仅用于测试目的:一切正常(显示产品,数据正确,没有错误)。我必须构建一个购物车才能让最终用户购买东西,但是尽管尝试了几个包,我还是无法将商品添加到我的购物车中。
这是我尝试过的:
- 尝试使用 Crinsane's Laravel Shopping Cart,但发现它仅适用于 Laravel 5.6 或更早版本;
- 更新为Hardevine's Shopping Cart,因为如果你有 Laravel 5.7+,建议使用它,但我无法将商品添加到购物车。
- 更换包装,使用Treestoneit's Shopping Cart(因为它说它适用于 Laravel 6),同样的问题,添加任何商品后购物车都是空的。
- 尝试静态添加项目(无请求,无 POST,仅调用具有固定参数的 Cart::add()),没有改进。
我的代码如下(截至上次更新,所以这里我使用的是 Treestoneit 的购物车)。
CartController.php
use Illuminate\Http\Request;
use App\Product;
use Treestoneit\ShoppingCart\Facades\Cart;
...
public function store(Request $request)
{
$product = Product::findOrFail($request->id);
Cart::add($product, 1);
return redirect()->route('cart.index')->with('success_message', 'Item added to cart successfully!');
}
product.blade.php
<form action="{{ route('cart.store', $product) }}" method="POST">
{{ csrf_field() }}
<button type="submit" class="btn btn-primary">Add to cart!</button>
</form>
($product 被正确检索,没有问题,这里它被发送到上面的 store() 函数)
cart.blade.php
...
{{ Cart::items() }}
...
@if (session()->has('success_message'))
{{ session()->get('success_message') }}
@endif
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
@endif
(在切换到最新的包之前,我使用 @foreach 语句逐项打印出整个购物车,但为了避免任何语法错误,我决定让它变得简单,这里是 Cart::items( ) 应该只打印购物车内容,但它是空的:'[]')。
注意事项:
- redirect() 有效:单击产品页面中的按钮后,我被重定向到购物车页面,但没有 success_message 并且购物车仍然是空的。
- 已尝试清除缓存
- 我试图将整个 $product 作为参数传递给 store() 函数并直接使用 Cart::add($product, 1),但没有 改进。
在这一点上,我不知道我在做什么,我试图了解我是否遗漏了一些东西或存在实际问题。任何人都可以帮助或建议兼容的软件包吗?提前致谢。
【问题讨论】:
标签: php laravel e-commerce shopping-cart