farbod 3 گزارش دادن ارسال شده در فروردین 99 سلام خسته نباشید برای قسمت فرانت میخوام وقتی روی هر دسته بندی کلیک شد صفحه مربوط به اون دسته بندی باز بشه نمیدونم چیکار کنم که وقتی روی دسته بندی مثلا طراحی میزنم دقیقا همون دسته بندی نمایش بده نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 شما باید مراحل زیر رو انجام بدید 1: ایجاد route مربوط به دسته بندیها که باید شناسه هر دسته بندی رو به route پاس بدید 2: وقتی route اجرا شد باید در کنترلر و داخل متد مثلا show شناسه دسته بندی رو بگیرید و با کوئری به model آیتمهای مربوط به دسته بندی جاری رو دریافت کنید 3: نمایش آیتمهای دریافت شده در صفحه view 1 نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 در 2 ساعت قبل، saber گفته است : شما باید مراحل زیر رو انجام بدید 1: ایجاد route مربوط به دسته بندیها که باید شناسه هر دسته بندی رو به route پاس بدید 2: وقتی route اجرا شد باید در کنترلر و داخل متد مثلا show شناسه دسته بندی رو بگیرید و با کوئری به model آیتمهای مربوط به دسته بندی جاری رو دریافت کنید 3: نمایش آیتمهای دریافت شده در صفحه view این روت ببنید درست نوشتم؟ Route::get('/categories', 'front\CategoryController@index')->name('categories'); Route::get('/category/{category}', 'front\CategoryController@index')->name('category'); و قسمت کنترلر public function index() { $Categories = Category::orderBy('id','DESC')->paginate(20); return view('front.Categories' , compact('Categories')); } مادل class Category extends Model { protected $fillable = ['name','status','user_id','description','image','slug']; protected $attributes = [ 'hit'=> 1, ]; ویو هم که ساختم بی زحمت چک کنید کجاشو اشتباه نوشتم نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 اشتباه اول این هست که برای لیست مجموعه ها و مجموعه تک از یک متد کنترلر استفاده کردید برای هر route باید از متد کنترلر جدا استفاده کنید. route هر مجموعه رو با فرض اینکه متد داخل کنترلر show باشه باید اینطوری بنویسید Route::get('/category/{id}', 'CategoryController@show')->name('category'); مساله بعدی فرض کنیم جدول مجموعه ها و محصولات رو داریم باید در model روابط بین این دو جدول رو پیاده سازی کنید مثلا اگر رابطه یک به چند باشه باید داخل مادل Category متد زیر رو بنویسید public function products(){ return $this->hasMany(Product::class); } و در داخل مادل محصولات متد زیر رو قرار بدید public function category(){ return $this->belongsTo(Category::class); } حالا برای دسترسی به محصولات هر مجموعه داخل کنترلر Category متد show رو به شکل زیر میتونید پیاده سازی کنید public function show(int $id){ $category = Category::with('products')->where('id',$id)->first(); return view('front.category',compact('category')); } و داخل view هم با استفاده از یک حلقه میتونید محصولات داخل مجموعه رو نمایش بدید @foreach($category->products as $product) اطلاعات هر محصول اینقسمت قابل دسترسی هست @endforeach 2 نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 چرا وقتی میزنم روی هر دسته بندی صفحه 404 میاد؟ مشکل از کجاشه؟اصلا پیدا نمیکنه فقط تو مرورگر اسم هر دسته بندی نمایش میده نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 کدتون رو چطوری نوشتید؟ احتمالا route درست اجرا نمیشه نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 در 34 دقیقه قبل، saber گفته است : کدتون رو چطوری نوشتید؟ احتمالا route درست اجرا نمیشه یه روت هوم کنترلر که ایجاد کرده بودم تو همون کتگوری رو تعریف کردم کنار بقیه کنترلر جدا ایجاد کردم برای کتگوری ولی اجرا نمیشد و همش ارور میداد تو هوم کنترلر اجرا میکنم بالا میاد صفحه ایندکس ولی صفحه مربوطه باز نمیشه روت ها Route::get('/', 'front\HomeController@index')->name('home'); Route::get('/category/{category}', 'front\HomeController@show')->name('category'); هوم کنترلر public function index() { $categories = Category::orderBy('id')->get(); return view('front.main', compact('categories')); } public function show(Category $category) { $category = Category::with('articles')->where('Category', $category)->first(); return view('front.category',compact('category')); } نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 متد show رو به این شکل بنویسید public function show(int $id) { $category = Category::with('articles')->where('id', $id)->first(); return view('front.category',compact('category')); } کدهای view لیست مجموعه رو هم بذارید ببینیم چی نوشتید ممکنه لینکها رو درست نذاشته باشید 1 نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 در 2 ساعت قبل، saber گفته است : متد show رو به این شکل بنویسید public function show(int $id) { $category = Category::with('articles')->where('id', $id)->first(); return view('front.category',compact('category')); } کدهای view لیست مجموعه رو هم بذارید ببینیم چی نوشتید ممکنه لینکها رو درست نذاشته باشید این هم ویو اون طریقی که بالاتر گفتید نوشتم ولی ارور میداد پیدا نمیکرد ارتیکلو <div class="row"> @foreach($categories as $category) <div class="col-md-6 col-lg-4 wow bounceInUp" data-wow-duration="1.4s"> <div class="box"> <img src="<?php echo '/storage'.basename($category->image) ?>" alt="" style="max-height:100px;"/> <h4 class="title"><a href="{{$category->name}}">{{$category->name}}</a></h4> <p class="description">{{$category->slug}}</p> </div> </div> @endforeach </div> نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 یسوال تو php وقتی میخواستیم صفحه مربوط به دسته بندی که لینک میشه رو درست کنیم همون فایلی که مثلا مربوط به مطالب بود میزاشتیم با یک کوئری مینوشتیم برای لاراول به چه صورته ؟باید چه کدی نوشت؟ برای ویویی که بالا فرستادم ادرسی که لینک کردم رو به این صورت تغییر دادم href="{{route('category', $category->slug)}}" این صفحه باز کرد http://localhost:8000/category/آموزش فتوشاپ این ادرس درسته؟ ولی این ارور هست Argument 1 passed to App\Http\Controllers\front\HomeController::show() must be of the type int, string given از متد شو ایراد میگیره نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 شما لینک رو براساس هر مقدار که بسازید همون هم به متد show پاس داده میشه و کوئری براساس اون زده میشه مثل همون php خام هست منتها با استفاده از متدهای لاراول حالا شما اینجا از slug استفاده کردید باید متد show رو هم با همون درست کنید که به شکل زیر میشه public function show(string $slug) { $category = Category::with('articles')->where('slug', $slug)->first(); return view('front.category',compact('category')); } 1 نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 خیلی ممنون این صفحه نمایش دسته بندی article رو نمیشناسه ویو مشکل داره یا باید تو روت ها یا کنترلر چیزی اضافه کنم ؟ @foreach ($articles as $article) <div class="col-sm-3" > <img src="<?php echo '/storage'.basename($article->image) ?>" alt=""/> <h3><a href="{{route('article', $article->slug)}}">{{$article->name}} </a></h3> <p><?php echo mb_substr(strip_tags($article->description),0,100,'UTF8').'...'; ?></p> <div> نویسنده : {{$article->user->name}} | <i class="fa fa-eye"> {{$article->hit}} </i> </div> </div> @endforeach نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 توی مادل ها بررسی کنید ببینید روابط category و article رو درست پیاده سازی کردید یا نه 1 نقل قول Share this post Link to post Share on other sites
farbod 3 گزارش دادن ارسال شده در فروردین 99 وقتی به اون صورتی که بالا نوشتید مینویسیم این ارور میده SQLSTATE[42S22]: Column not found: 1054 Unknown column 'articles.category_id' in 'where clause' (SQL: select * from `articles` where `articles`.`category_id` in (6)) وقتی اینطوری مینویسم مادل کتگوری namespace App\frontmodels; use Illuminate\Database\Eloquent\Model; class Category extends Model { protected $fillable = ['name', 'slug','image']; public function articles() { return $this->belongsToMany(Article::class); } } مادل ارتیکل namespace App\frontmodels; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $fillable = ['name', 'slug','user_id','description','image']; protected $attributes = [ 'hit'=> 1, ]; public function categories() { return $this->belongsToMany(Category::class); } این ارور میده Undefined variable: articles (View: C:\xampp\htdocs\laravel\resources\views\front\category.blade.php) خیلی اذیتتون کردم من عذر میخوام واقعا نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در فروردین 99 از متن خطای sql مشکل شما کاملا مشخص هست. ببینید برای پیاده سازی رابطه یک به چند بین جدول مجموعه ها و مطالب شما باید در دیتابیس داخل جدول مطالب یک ستون به اسم category_id داشته باشید تا هر مطلبی رو به یک مجموعه اختصاص بدید. الان شما چطوری مطالب رو به مجموعه اختصاص داده بودید؟ آموزشهای استاد طالبی رو مجدد ببینید و قسمت پیاده سازی روابط و مطالب و مجموعه ها رو به دقت ببینید 1 نقل قول Share this post Link to post Share on other sites