Laravel: REJECT ROUTE не определен, но существует в web.php
У меня есть функция отклонения в моем контроллере Календаря, но всякий раз, когда я перенаправляю на страницу просмотра, она отображает ошибку, говорящую, что мой маршрут не определен.
Я попытался переставить и переименовать мой маршрут, но он все еще показывает ошибку.
Вот моя форма:
{!! Form::open(['url' => route('therapist.reject.appointment', $bookingRequest), 'method' => 'delete', 'onsubmit' => 'javascript:return confirm("Are you sure?")']) !!}
<button type="submit" class="btn btn-warning btn-block">Reject this appointment</button>
{{csrf_field()}}
{!! Form::close() !!}
Вот мои маршруты. Другие отображаемые маршруты работают отлично:
Route::get('therapist-calendar/{bookingRequest}', 'TherapistCalander')->name('therapist.calendar');
Route::post('therapist-calendar/{bookingRequest}',
'TherapistCalander@saveAppointment')->name('therapist.book.appointment');
Route::patch('therapist-calendar/{bookingRequest}',
'TherapistCalander@finishedAppointment')->name('therapist.finish.appointment');
Route::delete('therapist-calendar/{bookingRequest}',
'TherapistCalander@rejectAppointment')->name('therapist.reject.appointment');
Route::delete('therapist-calendar/{bookingRequest}',
'TherapistCalander@cancelAppointment')->name('therapist.cancel.appointment');
И, наконец, моя функция:
public function rejectAppointment(Request $request, BookingRequest $bookingRequest)
{
$bookingRequest->reject();
return redirect()->back()->with('rejectStatus', true);
}
Страница просмотра, которой принадлежит эта кнопка, должна иметь возможность отображать кнопки отклонения и завершения наряду с представлением календаря.
РЕДАКТИРОВАТЬ Последующий вопрос: возможно ли это потому, что маршруты похожи друг на друга? Если так, как я могу это исправить?
3 ответа
Попробуйте изменить строку "Отклонить" и "Отменить", потому что она похожа.
Route::delete(
'therapist-calendar/{bookingRequest}/delete',
'TherapistCalander@rejectAppointment'
)->name('therapist.reject.appointment');
Route::delete(
'therapist-calendar/{bookingRequest}',
'TherapistCalander@cancelAppointment'
)->name('therapist.cancel.appointment');
Измените свой код на
{!! Form::open(['url' => route('therapist.reject.appointment', ['bookingRequest' => $bookingRequest]), 'method' => 'delete', 'onsubmit' => 'javascript:return confirm("Are you sure?")']) !!}
{{csrf_field()}}
<button type="submit" class="btn btn-warning btn-block">Reject this appointment</button>
{!! Form::close() !!}
Параметры маршрута передаются в виде массива, и это должно работать нормально. См. Документ
Можете ли вы попробовать этот код
<form action="{{ route('therapist.reject.appointment', ['bookingRequest' => $bookingRequest]) }}" method="POST">
@method('DELETE')
@csrf
<button type="submit" class="btn btn-warning btn-block">Reject this appointment</button>
</form>
ОБНОВИТЬ
ИСПРАВЛЕНО
Я понял, так как они имеют похожие ссылки, web.php нашел это запутанным, поэтому он не читал этот маршрут.
Вот почему я изменил свой маршрут с:
Route::delete('therapist-calendar/{bookingRequest}',
'TherapistCalander@rejectAppointment')->name('therapist.reject.appointment');
К этому:
Route::delete('doReject/{bookingRequest}',
'TherapistCalander@rejectAppointment')->name('therapist.reject.appointment');