Paradox
3 سال پیش توسط Paradox مطرح شد
34 پاسخ

دسته بندی محصولات

سلام
من دسته بندی محصولات رو نمایش دادم میخام وقتی روی هر دسته بندی کلیک میشه همون محصولات نمایش بده
تو 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'));
    }
}

ثبت پرسش جدید
فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

سلام ، ابتدا لینک رو به این صورت بنویسید

 <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
    }
;

Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@eniack
ممنونم
تو مدل پروداکت اینو قرار دادم

    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }

برای category
نیاز هست برای بخش فرانت و ادمین یک مدل جدا درست کنم؟یا باهم باشه مشکلی ایجاد نمیشه؟
تو مدل category هم این مقدار گذاشتم


    public function products()
    {
        return $this->belongsToMany(Product::class);
    }

هنوزم وقتی روی دسته بندی مورد نظر میزنم صفحه 404 نمایش میده


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

اگر ارور ۴۰۴ دارید روت به درستی تعریف نشده ، بقیه موارد به نظر درست هستن


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@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 همون اسمی که تو روت گذاشتم تعریف کردم


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

کسی میدونه مشکل کجاست ؟لطفا راهنمایی کنید


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

کنترلر رو به درستی صدا میزنید؟!!!!

Route::get('shop/{category}' , 'frontend\CategoryController@show')->name('shop');

Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@eniack
بله کنترلر درست صدا زدم
نمیدونم کجای کارم اشتباس


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

بررسی کنید که دقیقا متد show داخل همین کنترلر هست ؟ و روت رو دوباره دستی بنویسید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0
public function index()
    {
        return view('category::index');
    }

آدرس view تون رو یک نگاه بکن!


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@juza66

ادرس ویو رو که درست کرده بودم ولی این مشکل رفع نشد

    public function show(Category $category)
    {
       $product = Category::where("name" , $category)->first();
       $product = $product->products;
    }

مگه اینک داخل متد مشکل داشته باشه؟


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@eniack
بله داخل همین کنترلر هست
چندبار روت رو عوض کردم


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

نسخه لاراول؟! آیا Route که تعریف میکنید میشناسه؟!

من مشکلی که دارم توی لاراول 8 ، هربار Route که تعریف میکنم باید یکبار php artisan optimize رو بزنم تار روت جدید رو پیدا کنه!
شما هم یکبار اینکار رو انجام بده!


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

نسخه 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);
    }

همینه اینهارو مدام دارم تغییر میدم
تو مدل ها مشکلی وجود داره ؟


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

یک سوال؟!

آیا متد قراره یک ویو برگردونه؟! اگر آره آدرس 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'));
    }

Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@juza66
بله دقیقا قراره یک ویو بر اساس هر دسته بندی که روش میزنم برگردونه
return هم انجام دادم ولی متاسفانه باز 404 نمایش میده
اول اومدم یک متد جدا هم برای نمایش ویو تعریف کردم
داخل متد شو هم ریترن کردم
زمانی که رو دسته بندی مورد نظر میزنم 404 فقط نمایش میده


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

روی لینک یک اینسپکت بزن ببین آدرسش چجوریه (اگر میتونی اسکرین شات بده)
دوم قدم به قدم dd بگیر ببین آیا اطلاعاتی سمت این متد show میرسه؟!


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

ببینید حتی اگر view هم پاس ندید بهش باید حداقل یک صفحه سفید نمایش بده !!!!
فکر میکنم متوجه شدم مشکل کجاس حدس میزنم باید قبل از shop اسلش قرار بدید

Route::get('/shop/{category}' , 'frontend\CategoryController@show')->name('shop');

اگر بازهم ارور داشتید ، روت رو به این صورت بنویسید

Route::get('/shop/{category}', function ($category) {
   return $category;
});

Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

dd گرفتم اصلا انگار متد show نمیخونه

لینک

لینک صفحه


Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
0

@eniack
اینو که قرار دادم

Route::get('/shop/{category}', function ($category) {
   return $category;
})->name('shop');

وقتی روی لینک میزنم اسم رو برمیگردونه الان
درست شد


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

خب بالاخر درست شد !!! و مشکل از کنترلر بوده
الان این کد رو بنویسید

 $product = Category::where("name" , $category)->first();
        $products = $product->products

و $products رو compact کنید داخل روت مد نظر خودتون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام