Laravel: ОТКЛОНИТЬ МАРШРУТ, который не определен, но существует в web.php

#laravel #laravel-5 #laravel-5.6 #laravel-routing #laravel-route

#laravel #laravel-5 #laravel-5.6 #laravel-маршрутизация #laravel-маршрут

Вопрос:

У меня есть функция отклонения в моем контроллере календаря, но всякий раз, когда я перенаправляю на страницу просмотра, отображается сообщение об ошибке, в котором говорится, что мой маршрут не определен.

Я попытался изменить и переименовать свой маршрут, но он по-прежнему отображает ошибку.

Вот моя форма:

 {!! 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);
    }
  

Страница просмотра, к которой относится эта кнопка, должна иметь возможность отображать кнопки для отклонения и завершения, наряду с представлением календаря.

РЕДАКТИРОВАТЬ Последующий вопрос: возможно ли это потому, что маршруты похожи друг на друга? Если да, то как мне это исправить?

Комментарии:

1. Используете ли вы все помеченные версии Laravel? Если нет, то можете ли вы обновить теги вопросов?

2. Кроме того, вам следует изучить маршруты ресурсов — это немного упростит вашу маршрутизацию и выполнит некоторую шаблонную работу.

3. @Adam извините за это! Отредактировано : D

4. Можно ли использовать маршруты ресурсов, даже если я не использую контроллер ресурсов?

5. ДА. Контроллер ресурсов — это просто стандартный способ присвоения имен каждой функции — вы можете реплицировать часть (или все) этого, не создавая его с помощью php artisan make:controller --resource .

Ответ №1:

Попробуйте изменить отклонение и отменить строку url, потому что она похожа.

 Route::delete(
    'therapist-calendar/{bookingRequest}/delete',
    'TherapistCalander@rejectAppointment'
)->name('therapist.reject.appointment');

Route::delete(
    'therapist-calendar/{bookingRequest}', 
    'TherapistCalander@cancelAppointment'
)->name('therapist.cancel.appointment');
  

Ответ №2:

Измените свой код на

     {!! 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>
  

Комментарии:

1. Не обязательно передавать массив для одного параметра в маршруте.

2. @jogesh_pi будет очень полезно добавить ссылочную ссылку, которая описывает вашу точку зрения для меня, а также для будущих посетителей, не могли бы вы добавить ссылочную ссылку в документ?

3. @DanielaEchavez Можете ли вы попробовать новый код, который я опубликовал, и сообщить мне, какой новый результат / ошибку вы получите?

4. @PrafullaKumarSahu Я изменил ссылку. Я смог увидеть ваш пост только после того, как опубликовал обновление. Но спасибо!

5. @DanielaEchavez нет проблем, друг, важнее решить проблему надлежащим образом, а не обходным путем, если у вас есть решение, это всегда хорошо.

Ответ №3:

Обновить

ПРОБЛЕМА ИСПРАВЛЕНА

Я понял, что, поскольку у них похожие ссылки, web.php нашел это сбивающим с толку, поэтому не стал читать этот маршрут.

Вот почему я изменил свой маршрут с:

   Route::delete('therapist-calendar/{bookingRequest}',
'TherapistCalander@rejectAppointment')->name('therapist.reject.appointment');
  

К этому:

 Route::delete('doReject/{bookingRequest}',
    'TherapistCalander@rejectAppointment')->name('therapist.reject.appointment');