سلام
من دسته بندی محصولات رو نمایش دادم میخام وقتی روی هر دسته بندی کلیک میشه همون محصولات نمایش بده
تو href برا اساس id محصول باید باشه ؟ یا بر اساس نام محصول ؟
<ul class="list-group">
@foreach($categories as $category)
<li class="list-group-item">
@if($category->child)
<a href="{{ $category->id }}" class="pb-2"> {{ $category->name }}
@include('layouts.list-categories' , ['categories' => $category->child])
</a>
@endif
</li>
@endforeach
</ul>
این روت ها رو درست تعریف کردم ؟
Route::get('categories/{category}' , 'frontend\CategoryController@index');
Route::get('categories/{category}' , 'frontend\CategoryController@show')->name('category');
کوئری رو نمیدونم به چه صورت بنویسم من به شکل زیر نوشتم وقتی روی دسته بندی میزنم صفحه 404 نمایش میده
public function index()
{
return view('category::index');
}
public function show(Category $category)
{
$categories = Category::get();
return view('Category::frontend.category' , compact('categories'));
}
}
سلام ، ابتدا لینک رو به این صورت بنویسید
<ul class="list-group">
@foreach($categories as $category)
<li class="list-group-item">
@if($category->child)
<a href="{{ route('shop', ['category' => $category->name]) }}" class="pb-2"> {{ $category->name }}
@include('layouts.list-categories' , ['categories' => $category->child])
</a>
@endif
</li>
@endforeach
</ul>
روت رو به این صورت بنویسید
Route::get('shop/{category}' , 'frontend\CategoryController@show')->name('shop');
و برای دریافت محصولات ابتدا باید داخل مدل ها رابطه رو ایجاد کنید و داخل متد show به این صورت صدا بزنید
public function show($category)
{
$product = Category::where("name" , $category)->first();
$products = $product->products
}
;
@eniack
ممنونم
تو مدل پروداکت اینو قرار دادم
public function categories()
{
return $this->belongsToMany(Category::class);
}
برای category
نیاز هست برای بخش فرانت و ادمین یک مدل جدا درست کنم؟یا باهم باشه مشکلی ایجاد نمیشه؟
تو مدل category هم این مقدار گذاشتم
public function products()
{
return $this->belongsToMany(Product::class);
}
هنوزم وقتی روی دسته بندی مورد نظر میزنم صفحه 404 نمایش میده
@eniack
این قسمت رو مثل شما نوشتم
Route::get('shop/{category}' , 'frontend\CategoryController@show')->name('shop');
با shop نتیجه نگرفتم بجاش product قرار دادم باز هم نتیجه نگرفتم همش 404 میاد
<a href="{{ route('shop', ['category' => $category->name]) }}" class="pb-2"> {{ $category->name }}
برای این قسمت shop همون اسمی که تو روت گذاشتم تعریف کردم
کنترلر رو به درستی صدا میزنید؟!!!!
Route::get('shop/{category}' , 'frontend\CategoryController@show')->name('shop');
public function index()
{
return view('category::index');
}
آدرس view تون رو یک نگاه بکن!
ادرس ویو رو که درست کرده بودم ولی این مشکل رفع نشد
public function show(Category $category)
{
$product = Category::where("name" , $category)->first();
$product = $product->products;
}
مگه اینک داخل متد مشکل داشته باشه؟
نسخه لاراول؟! آیا Route که تعریف میکنید میشناسه؟!
من مشکلی که دارم توی لاراول 8 ، هربار Route که تعریف میکنم باید یکبار php artisan optimize رو بزنم تار روت جدید رو پیدا کنه!
شما هم یکبار اینکار رو انجام بده!
نسخه 7 استفاده میکنم
این دستور هم زدم ولی باز همینه
مشکل از کدهام هست
این روت که بارها تغییرش دادم ولی نتیجه ای حاصل نشد
Route::get('shop/{category}' , 'frontend\CategoryController@show')->name('shop');
کنترلر
public function show(Category $category)
{
$product = Category::where("name" , $category)->first();
$products = $product->products;
}
ویو
<ul class="list-group">
@foreach($categories as $category)
<li class="list-group-item">
@if($category->child)
<a href="{{ route('shop', ['category' => $category->name]) }}" class="pb-2"> {{ $category->name }} @include('layouts.list-categories' , ['categories' => $category->child])
</a>
@endif
</li>
@endforeach
</ul>
مدل category
public function child()
{
return $this->hasMany(Category::class , 'parent' , 'id');
}
public function products()
{
return $this->belongsToMany(Product::class);
}
مدل product
public function categories()
{
return $this->belongsToMany(Category::class);
}
همینه اینهارو مدام دارم تغییر میدم
تو مدل ها مشکلی وجود داره ؟
یک سوال؟!
آیا متد قراره یک ویو برگردونه؟! اگر آره آدرس veiw رو کجا ریترن کردی؟!
public function show(Category $category)
{
$product = Category::where("name" , $category)->first();
$product = $product->products;
}
آخه توی تایپیک اول اینو نوشته بودی؟! یک ویو برگشت دادی!
public function show(Category $category)
{
$categories = Category::get();
return view('Category::frontend.category' , compact('categories'));
}
@juza66
بله دقیقا قراره یک ویو بر اساس هر دسته بندی که روش میزنم برگردونه
return هم انجام دادم ولی متاسفانه باز 404 نمایش میده
اول اومدم یک متد جدا هم برای نمایش ویو تعریف کردم
داخل متد شو هم ریترن کردم
زمانی که رو دسته بندی مورد نظر میزنم 404 فقط نمایش میده
روی لینک یک اینسپکت بزن ببین آدرسش چجوریه (اگر میتونی اسکرین شات بده)
دوم قدم به قدم dd بگیر ببین آیا اطلاعاتی سمت این متد show میرسه؟!
ببینید حتی اگر view هم پاس ندید بهش باید حداقل یک صفحه سفید نمایش بده !!!!
فکر میکنم متوجه شدم مشکل کجاس حدس میزنم باید قبل از shop اسلش قرار بدید
Route::get('/shop/{category}' , 'frontend\CategoryController@show')->name('shop');
اگر بازهم ارور داشتید ، روت رو به این صورت بنویسید
Route::get('/shop/{category}', function ($category) {
return $category;
});
@eniack
اینو که قرار دادم
Route::get('/shop/{category}', function ($category) {
return $category;
})->name('shop');
وقتی روی لینک میزنم اسم رو برمیگردونه الان
خب بالاخر درست شد !!! و مشکل از کنترلر بوده
الان این کد رو بنویسید
$product = Category::where("name" , $category)->first();
$products = $product->products
و $products رو compact کنید داخل روت مد نظر خودتون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟