راکت
Amir fazel
Amir fazel
توسط Amir fazel مطرح شد
6 پاسخ

مشکل با مدل در آپدیت کردن لاراول

سلام و وقت بخیر

من قبلا توی ورژن 5.7 لاراول به این صورت توی کنترولر مدل را وصل کرده بودم:

    public function single(Product $product)

    {
///////
}

و به درستی کار می کرد به تازگی لاراول را آبدیت کردم حالا دیگه اون قسمت 404 not found می شود
ولی به این صورت قرار می دهم بالا می آید ولی ارور می دهد: (public function single($product

ErrorException (E_NOTICE)
Trying to get property 'title' of non-object

حالا دقیقا نمی دونم لاراول توی ورژن جدیدتر به این صورت مشکل دارد؟ public function single(Product $product)
باید کدها را تغییر دهم؟
ممنون می شویم راهنمایی کنید


ثبت پرسش جدید
حسام موسوی
حسام موسوی
تخصص :طراح و برنامه نویس
@hesammousavi6 سال پیشمطرح شد
0

شما از route model biding استفاده کردید ؟ به چه شکلی از اون بهره بردید ؟ کدشو بفرستید لطفا
از روت


Amir fazel
Amir fazel
@fazel1amir26 سال پیشمطرح شد
0

بله
این روت هست

Route::get('/product/{product}', 'ProductController@single')->name('product');

این مدل هست:

<?php

namespace App;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Hash;

class Product extends Model
{
    protected $fillable = [
        'user_id',
        'category_id',
        'title',
        'slug',
        'author',
        'abstract',
        'body',
        'details',
        'contents',
        'price',
        'image',
        'link',
        'preview',
        'type',
        'tags'
    ];

    public function path()
{
    return "/product/$this->slug";
}

    public function user()
    {
        return $this->belongsTo(User::class);
    }

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

و این هم کنترلور:

public function single(Product $product)

    {

        $findCategory = Category::where('id', $product->category_id)->first();

        $sameCategories = Product::where('category_id', $product->category_id)->latest()->paginate(10);

        return view('products.single', compact('product', 'sameCategories', 'findCategory'));

    }

Amir fazel
Amir fazel
@fazel1amir26 سال پیشمطرح شد
0

اینو تست گرفتم که باز not found شد:

public function single(Product $product)

    {
        return $Product;
    }

سبحان دادخواه
سبحان دادخواه
تخصص :دانشجوی برنامه نویسی :)
@SobhanDadkhah6 سال پیشمطرح شد
0

با سلام . @fazel1amir2
شما چطوری روت رو فراخوانی میکنید ؟ پارامتری که صدا میزنید چیه ؟ منظورم آدرس هست . مثلا میخواین روی یک لینکی کلیک کنید که بره به صفحه محصول. اومدین توی ویو اینطوری لینکو تعریف کردین ؟

<a href="https://roocket.ir/{{ $product->path }}">لینک محصول</a>

Amir fazel
Amir fazel
@fazel1amir26 سال پیشمطرح شد
1

سلام مرسی از همه اوکی شد.

من از مدلroute model biding استفاده کرده بودم منتهی یادم رفته بود توی قسمت AppServiceProvider اضافه کنم توی این قسمت توضیح داده شده:
https://roocket.ir/series/laravel-from-scratch/episode/11

ممنون


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
0

میتونی توی مدل متد زیر رو override کنی:

/**
 * Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
    return 'slug';
}

برای استفاده از Route Model Binding حتما نباید چیزی رو داخل Service provider بایند کرد.. البته این هم یه راه هست


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

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