php - Laravel 6.15 是否兼容任何购物车包?
问题描述
我正在尝试为一个大学项目开发一个基于 Laravel 的电子商务,没什么花哨的,它不会发布。
前提:我是一名学生和初学者,对于我的任何错误,我深表歉意。我正在使用 Laravel 6.15。
我制作了一个非常基本的 HTML+CSS 模板并为电子商务构建了一个自定义数据库,加载了一些记录仅用于测试目的:一切正常(显示产品,数据正确,没有错误)。我必须建立一个购物车才能让最终用户购买东西,但是尽管尝试了几个包,我还是无法将商品添加到我的购物车中。
这是我尝试过的:
- 尝试使用Crinsane 的 Laravel Shopping Cart,但发现它仅适用于 Laravel 5.6 或更早版本;
- 已更新到Hardevine 的购物车,因为如果您有 Laravel 5.7+,建议使用它,但我无法将商品添加到购物车。
- 换了包,和Treestoneit 的购物车一起去(因为它说是 Laravel 6),同样的问题,添加任何物品后购物车都是空的。
- 尝试静态添加项目(没有请求,没有 POST,只是使用固定参数调用 Cart::add()),没有改进。
我的代码如下(截至上次更新,所以这里我使用的是 Treestoneit 的购物车)。
购物车控制器.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!');
}
产品.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() 函数)
购物车.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),但没有任何改进。
在这一点上,我不知道我正在进入什么,我试图了解我是否遗漏了一些东西或者是否存在实际问题。任何人都可以帮助或建议兼容的软件包吗?提前致谢。
解决方案
我们是 Laravel 的 TreeStoneIT 购物车的创造者。
很难确定,因为没有完整的来源可以重现该问题,我的猜测是具有Buyable
特征的模型可能没有正确设置,但也可能是其他东西。
您可以在此处查看完整的工作示例:https ://github.com/treeStoneIT/laravel-commerce
推荐阅读
- docker - 如何使用 ssh 访问 Fargate ECS 实例
- mysql - 如何在不实际更新行的情况下调用`ON UPDATE CURRENT_TIMESTAMP()`?
- r - 使用 ggplot2 在 R 中绘制等倾线
- python - 使用 python turtle 绘制一个带有线条的三角形
- dictionary - 选择图像时使用 Flutter Carousel Slider 路由到特定页面
- javascript - JavaScript 箭头函数的 raku 等价物是什么?
- elasticsearch - 在 ElasticSearch 中搜索大量数字没有返回结果
- python - 当类的 __init__ 变量更改时如何检测和触发函数
- javascript - php 应用程序 Gitlab 分支 url 覆盖
- javascript - Angular 9 路线导航等到动画完成