Paradox
3 سال پیش توسط 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');

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


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

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


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

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


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

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


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

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

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


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

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


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

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


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

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


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

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

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

Paradox
تخصص : در حال یادگیری
@paradox 3 سال پیش مطرح شد
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="{{ 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>

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

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


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

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


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

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