我有一个书店网站,我在特殊类别中插入产品,但是产品在不同类别中显示,也就是该类别。我不知道为什么。 我使用laravel 5.4,我的控制器和刀片在这里。你可以看到他们。 在控制器中定义了许多变量,但是$ products在刀片中使用,这很重要。请帮助我。:) 先谢谢了 这些是我的代码 控制器
function index(Request $request)
{
header('Cache-Control: no-cache, no-store, must-revalidate');
$options = ($request->get('options')) ? array_filter($request->get('options')) : [];
$variants = ($request->get('variants')) ? array_filter($request->get('variants')) : [];
$collections_fillter =($request->get('collections_fillter')) ? array_filter($request->get('collections_fillter')) : [];
$data['collections_fillter']=$collections_fillter;
$category_id = ($request->get('cat')) ? $request->get('cat') : null;
$cats = ($category_id) ? Productcat::find($category_id)->parents($category_id) : null;
$search_cats = ($category_id) ? Productcat::find($category_id)->childs($category_id)->pluck('id')->toArray() : null;
if (isset($category_id))
array_push($search_cats, intval($category_id));
$perPage = ($request->get('perPage')) ? $request->get('perPage') : 12;
$soon = ($request->get('soon')) ? $request->get('soon') : 0;
$sort = ($request->get('sort')) ? $request->get('sort') : 'position';
$sortCondition = ($request->get('sortCondition')) ? $request->get('sortCondition') : 'ASC';
if ($sort == 'title') {
$results = Product::join('product_translations as t', function ($join) {
$join->on('products.id', '=', 't.product_id')
->where('t.locale', '=', 'fa');
})
->groupBy('products.id')
->orderBy('t.title', $sortCondition);
} else {
$results = Product::select('products.*')
->where('products.display', '1')
->groupBy('products.id')
->orderBy($sort, $sortCondition);
}
if ($soon) {
$results->whereStatus('coming_soon');
}
if ($cats) {
$results
->join('products_productscat', 'products_productscat.product_id', '=', 'products.id')
->whereIn('products_productscat.productcat_id', $search_cats);
}
$tmp_res = $results;
$data['max'] = $tmp_res->get()->max('list_price');
$data['min'] = $tmp_res->get()->min('list_price');
$data['step'] = 10;
if ($s = $request->get('s')) {
$results->whereTranslationLike('title', "%$s%");
}
if ($price = $request->get('price')) {
$results->where('products.list_price', '<=', explode(';', $price)[1])->where('products.list_price', '>=', explode(';', $price)[0]);
}
if ($variants) {
$j = 0;
foreach ($variants as $variant) {
$j++;
$alias = "v$j";
$results
->join("product_featurevariant as $alias", "$alias.product_id", '=', 'products.id')
->where("$alias.variant_id", $variant);
}
}
if ($options) {
$product_oc_items = OptionVariant::whereIn('id', $options)->get()->groupBy('option_id');
$i = 0;
foreach ($product_oc_items as $product_oc_item) {
$list = $product_oc_item->pluck('id');
if ($i == 0)
$option_result = DB::table('product_oc_items as t0t')
->whereIn('t0t.optionvariant_id', $list);
if ($i != 0) {
$alias = 't' . $i . 't';
$option_result
->join('product_oc_items as ' . $alias, $alias . '.combination_id', '=', 't0t.combination_id', 'left')
->whereIn($alias . '.optionvariant_id', $list);
}
$i++;
}
$product_oc = ProductOc::whereIn('id', $option_result->pluck('t0t.combination_id'));
$results->whereIn('products.id', $product_oc->pluck('product_id'));
}
if($collections_fillter){
$results->whereHas('collection',function($query) use($collections_fillter){
$query->whereIn('id',$collections_fillter);
});
}
$products = $results->select('products.*')->get();
$totalItems = count($products);
$totalPages = ceil($totalItems / $perPage);
$page = Input::get('page', 1);
if ($page > $totalPages or $page < 1) {
$page = 1;
}
$offset = ($page * $perPage) - $perPage;
$products = array_slice($products->toArray(), $offset, $perPage);
$paginator = new Paginator($products, $totalItems, $perPage, $page, [
'path' => $request->url(),
'query' => $request->query(),
]);
$data['Products'] = $products;
$data['paginator'] = $paginator;
$data['cats'] = $cats;
$data['cat'] = $category_id;
$data['options'] = $options;
$data['variants'] = $variants;
$data['search_cats'] = $search_cats;
$data['collections'] = Collection::all();
$data['url_vars'] = [
'cat' => $category_id,
'options' => $options,
'variants' => $variants,
'sort' => $sort,
'sortCondition' => $sortCondition,
'perPage' => $perPage,
];
if ($request->ajax()) {
return Response::json(View::make('front.products.list', $data)->render());
} else {
return view('front.products.index', $data);
}
}
视图
@if(count($Products))
<?php $Products = collect($Products); ?>
@foreach($Products->chunk(4) as $items)
<div class="row">
@foreach($items as $item)
@include('front.products.product_box',['Product' => \App\Product::find($item['id'])])
@endforeach
</div>
@endforeach
@else
<div class="noresult"><div class="inner rtl">موردی یافت نشد!</div></div>
@endif