راکت
Paradox
Paradox
توسط Paradox مطرح شد
حل
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');

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


ثبت پرسش جدید
فخرالدین لنگی
فخرالدین لنگی
تخصص :برنامه نویس وب، آندروید و سیستم های کامپیوتری
@fakhraddin4 سال پیشمطرح شد
0

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


فخرالدین لنگی
فخرالدین لنگی
تخصص :برنامه نویس وب، آندروید و سیستم های کامپیوتری
@fakhraddin4 سال پیشمطرح شد
0

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


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

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


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

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

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


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

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


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

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


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

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


فخرالدین لنگی
فخرالدین لنگی
تخصص :برنامه نویس وب، آندروید و سیستم های کامپیوتری
@fakhraddin4 سال پیشمطرح شد
0

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

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

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

@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>

فخرالدین لنگی
فخرالدین لنگی
تخصص :برنامه نویس وب، آندروید و سیستم های کامپیوتری
@fakhraddin4 سال پیشمطرح شد
0

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


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

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


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

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