راکت
حل شده

مشکل در ریدایرکت

10 پاسخ

سلام موقع ریدایرکت شدن بعد از ویرایش مقدار اسلاگ رو نمیشناسه
ویرایش انجام میشه ولی ریدایرکت نمیشه
dd گرفتم
از
dd($reply->disscussion) مقدار نال برمیگردونه
رابطه یک به چند تو مدل ایجاد کردم

Trying to get property 'slug' of non-object

کنترلر


    public function update(Reply $reply , Request $request)
    {

       $validData = $request->validate([

            'content' => 'required' ,

       ]);

       $reply->update($validData);

       alert()->success('با موفقیت ویرایش شد' , 'با تشکر');
       return redirect(route('discussion' , ['slug' => $reply->discussion->slug] ));

    }

روت discussion

    Route::get('discussions/edit/{slug}' , [DiscussionsController::class , 'edit'])->name('discussions.edit')->middleware('auth');

روت reply

Route::get('/reply/edit/{reply}' , [ReplyController::class , 'edit'])->name('reply.edit')->middleware('auth');

لطفا راهنمایی کنید

Paradox
Paradox
@paradox
ثبت پرسش جدید

پاسخ‌ها

10
فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

بهترین پاسخ

@codeLover
دوست گرامی توی مدل reply شما یک رابطه یک به یک رو ایجاد کردید با اسم discussions که آخرش حرف s داره ولی توی کنترلر شما این کد رو نوشتید reply->discussion که آخرش هیچ s ای نداره پس قاعدتا توی کنترلر به شما مقدار null برمی گردونه و داری از یک مقدار null که وجود نداره پارامتر slug پس لطفا یا توی مدل reply حرف s آخر رو حذف کنید (که منطقی تره) یا توی کنترل حرف s رو اضافه کنید

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

@codeLover
با سلام و وقت بخیر
خطای شما مربوط به اینه که دارید مقدار slug رو بر روی شی که وجود نداره یا مقدارش null برمی گردونید برای این کار دوتا اقدام باید انجام بدید اول validData رو چک بفرمایید که دقیقا همون پارامتر های که برای جدول reply نیاز دارید بهتون می ده چون انگار پارامتری که باعث می شه دو جدول reply و Discussion مقدار دهی نمی شه و در نتیحه رابطه ایی برقرار نمی شه بین دو جدول
دوم ستون های جداول رو چک کنید و کد مدل هاتون رو بررسی کنید

میلاد خسروی
میلاد خسروی
@milwad

تخصص: برنامه نویس بامزه

سلام خسته نباشید
اروری که من میبینیم میگه نمیتونه slug رو بگیره
و سوالم اینه که slug باهاش چیکار میکنی؟

شاید پاسخ شما همین‌جا باشد

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

@fakhraddin
@milwad
یک جدول discussion دارم و یک جدول reply که برای جدول reply کلید خارجی discussion_id در نظر گرفتم
و رابطه یک به چند ایجاد کردم
زمانی که یک discussion رو ویرایش میکنم از طریق اسلاگ انجام میشه و مشکلی نیست
حالا میخام برای reply هم وقتی ویرایش انجام میشه وارد همون discussion بشه با همون اسلاگ ولی مقدار نال برمیگردونه
نمیدونم چطوری این کارو انجام بدم که بعد از ویرایش وارد همون اسلاگ discussion بشه

مثل همین راکت وقتی یک پرسش و پاسخ رو ویرایش میکنیم

میلاد خسروی
میلاد خسروی
@milwad

تخصص: برنامه نویس بامزه

@codeLover
ببین تو اگه میخوای یه پیامی رو که مثلا فرض کن من الان ارسال کردم و زمانی که بخوام ادیت کنم دیگه برای reply اسلاگ نمیخواد فقط ایدی تو پیام و سوال رو بگیر و ابدیت کن همین

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

با ایدی ویرایش انجام میدم و انجام میشه
ولی وقتی میخام هدایت بشه به همون اسلاگی که برای پرسش هست این ارور نال نمایش میده
مشکل موقع ریدایرکت شدن صفحه هست

Paradox
Paradox
@paradox

تخصص: در حال یادگیری

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

فخرالدین لنگی
فخرالدین لنگی
@fakhraddin

تخصص: برنامه نویس وب، آندروید و سیستم های کامپیوتری

@codeLover
با سلام مجدد
دوست گرامی لطفا این قطعه کدهایی که ازتون می خوام ارسال بفرمایید جهت راهنمایی بیشتر شاید راه حل بهتری بشه پیشنهاد داد

  1. کلاس مدل Reply
  2. کلاس مدل Discussion
  3. کد Blade وقتی فرم Reply می شه
Paradox
Paradox
@paradox

تخصص: در حال یادگیری

@fakhraddin
سلام
مدل reply

    protected $fillable = [
        'user_id' , 'discussion_id' , 'best_answer' , 'content' ,
    ];

    public function discussions()
    {
       return $this->belongsTo(Discussion::class);
    }

مدل discussion

 protected $fillable = [
        'title' , 'slug' , 'content' , 'user_id' , 'channel_id'
    ];   

    public function replies()
    {
       return $this->hasMany(Reply::class);
    }

link edit reply

 <a href="https://roocket.ir/{{ route('reply.edit' ,  $reply->id) }}" class="btn btn-outline-info">ویرایش</a>

فرم reply

   <form action="{{ route('reply.update' ,  $reply->id ) }}" method="POST" enctype="multipart/form-data">
                                    @csrf
                                    @method('patch')

                                    <div class="form-group">
                                        <textarea name="content" id="content" class="form-control  @error('content') is-invalid @enderror" cols="30" rows="10" placeholder="ویرایش پاسخ">{{ $reply->content }}</textarea>
                                        @error('content')
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
                                         @enderror
                                    </div>
                                    <div class="form-group mt-3">
                                        <button class="btn btn-success" type="submit">ویرایش پاسخ</button>
                                    </div>
                                </form>
Paradox
Paradox
@paradox

تخصص: در حال یادگیری

بله کاملا درسته
مشکل من این بود که همش s رو تو کنترلر اضافه میکردم باز هم میدیدم به جواب نمیرسم
و باید تو مدل s رو حذف میکردم
ممنونم

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

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