۴۰۴ Not Found! قیمت ها به ۴۰۳ برگشت! به مدت محدود!
بزن بریم!سلام وقت بخیر
قراره وقتی ادمین روی دکمه حذف یه کامنت کلیک میکنه اون کامنت پاک شه ولی کامنت پاک نمیشه و هیچ اروری نمیده!
روت
Route::post("/comments/{id}/destroy" , 'Admin\CommentController@destroy')->name('CommentDelete');
کنترلر
public function destroy(Comment $comment , $id)
{
Comment::destroy($id);
return redirect(url('http://127.0.0.1:8000/admin/comments/'));
}
ویو
@foreach( $comments as $comment)
<div class="d-flex justify-content-center align-items-center p-2">
@if($comment->status == 'unaccepted')
<form method="post" class="card card-body m-2 p-2 bg-danger" action="{{route('CommentDelete' , "id" , $comment->id)}}">
@method('POST')
@csrf
{{$comment->text}}
<button type="submit" class="btn btn-warning" style="max-width: 15%;">حذف</button>
</form>
@endif
@if($comment->status == 'accepted')
<form method="post" class="card card-body m-2 p-2 bg-success" action="{{route('CommentDelete' , "id" , $comment->id)}}">
@method('POST')
@csrf
{{$comment->text}}
<button type="submit" class="btn btn-warning" style="max-width: 15%;">حذف</button>
</form>
@endif
</div>
@endforeach
ریدایرکت میشه به صفحه بدون هیچ اروری!
مشکل از کجاست؟
@mohammad.hekmaty مثلا یک متن تست برگردونید داخل متد Destroy ببینید اصلا درخواست میرسه به کنترلر ؟ فرضا
public function destroy()
{
dd('My Destroy Method');
}
من حس میکنم مشکل از ارسال پارامترتون هست به کنترلر. فرم مربوط به دلیت رو به این صورت تغییر بدید :
<form method="post" class="card card-body m-2 p-2 bg-danger"
action="{{route('CommentDelete' , $comment->id)}}">
@method('DELETE')
@csrf
{{$comment->text}}
<button type="submit" class="btn btn-warning" style="max-width: 15%;">حذف</button>
</form>
روت خودتون رو هم به اینصورت تغییر بدید
Route::delete("/comments/{id}/destroy" , 'Admin\CommentController@destroy')->name('CommentDelete');
بعد که موفق شدید به کنترلر برسید همون آیدی که دارید برای روت ارسال میکنید رو دریافت کنید و کامنت مربوطه رو پیدا کنید بعد حذفش کنید .
public function destroy($id)
{
$comment = Comment::findOrFail($id);
$comment->delete();
}
امیدوارم مشکلتون حل بشه
من خیلی وقت دیگه لاراول کار نمیکنم
ولی گمونم وقتی از route model binding استفاده میکنید نیازی نیست به این شکل عمل کنید
فقط
Route::post("/comments/{comment}/destroy" , 'Admin\CommentController@destroy')->name('CommentDelete');
و
public function destroy(Comment $comment )
{
$comment->destroy()
return redirect(url('http://127.0.0.1:8000/admin/comments/'));
}
@mohammad.hekmaty
باید همونطوری که دوستمون گفتن همون $comment که پیدا میشه متد destroy روش اجرا کنید.
همچنین طبق قوانین لاراول روت و درخواستتون از نوع DELETE بذارید .
@method('DELETE')
// --------------------------------------
Route::delete();
به این شکل بنویسید:
Comment::find($id)->delete()
همچنین redirect رو هم اینجوری بنویسید بهتره:
return Redirect::to('/admin/comments')
@navids
@miladparsi1070
@SobhanDadkhah
ممنون ولی متاسفانه هیچکدوم از این روش ها جواب نداد .
@mohammad.hekmaty اینجور مواقع پیشنهاد میکنم مرحله مرحله پیش برید . مثلا توی کنترلر ببینید میتونید دسترسی به کامنت داشته باشید ؟ با تابع dd دائما جاهای مختلف تست کنید . بعد متوجه میشید که مشکل چی هست . اصلا ارسال میشه پارامتر یا خیر . دسترسی دارید به دیتابیس یا خیر و ...
@mohammad.hekmaty مثلا یک متن تست برگردونید داخل متد Destroy ببینید اصلا درخواست میرسه به کنترلر ؟ فرضا
public function destroy()
{
dd('My Destroy Method');
}
من حس میکنم مشکل از ارسال پارامترتون هست به کنترلر. فرم مربوط به دلیت رو به این صورت تغییر بدید :
<form method="post" class="card card-body m-2 p-2 bg-danger"
action="{{route('CommentDelete' , $comment->id)}}">
@method('DELETE')
@csrf
{{$comment->text}}
<button type="submit" class="btn btn-warning" style="max-width: 15%;">حذف</button>
</form>
روت خودتون رو هم به اینصورت تغییر بدید
Route::delete("/comments/{id}/destroy" , 'Admin\CommentController@destroy')->name('CommentDelete');
بعد که موفق شدید به کنترلر برسید همون آیدی که دارید برای روت ارسال میکنید رو دریافت کنید و کامنت مربوطه رو پیدا کنید بعد حذفش کنید .
public function destroy($id)
{
$comment = Comment::findOrFail($id);
$comment->delete();
}
امیدوارم مشکلتون حل بشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟