Laravel - MethodNotAllowedHttpException.Сообщение - PullRequest
0 голосов
/ 22 октября 2018

Я получаю MethodNotAllowedHttpException .Мой маршрут определен и отображается в route: list .Я пытаюсь создать запись.

Это маршрут

Route::post('add-counsellor/{id}', 'SupportGroupsController@addCounsellor')->name('add-additional-counsellor');

с префиксом /admin/support-groups.

Моя форма

<form action"/admin/support-groups/add-counsellor/{{$data->id}}" method="post">
    {{ csrf_field() }}
    <div class="flex-grid__section">
        <label for="counsellor" class="flex-2-col control-label">{{ trans('Add additional Facilitator') }}</label>
        <div class="flex-4-col" id="counsellor_row1">
            <select class="form-control" name="counsellor">
                <option disabled>Select a Facilitator</option>
                @foreach ($counsellor as $key => $couns)
                <option value="{{$key}}">{{$couns}}</option>
                @endforeach
            </select>
        </div>
    </div>

    <input type="submit" value="Add counsellor">
</form>

Мой контроллер

public function addCounsellor($id){
      $participant = Participant::create(
          [
              'thread_id'     => $id,
              'user_id'       => request($counsellor),
              'last_read'     => new Carbon()
          ]
      );

      return back();
    }

Любая идея.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

У вас есть ошибка здесь <form action"/admin/support-groups/add-counsellor/{{$data->id}}" method="post"> вы пропустили = <form action="/admin/support-groups/add-counsellor/{{$data->id}}" method="post">

и да Если вы встроили функции с помощью laravel, такие как url и route, то используйте ихвместо ввода полного URL-адреса ..

Использование route:

<form action"{{ route('add-additional-counsellor',$data->id) }}" method="post">
    {{ csrf_field() }}
    <div class="flex-grid__section">
        <label for="counsellor" class="flex-2-col control-label">{{ trans('Add additional Facilitator') }}</label>
        <div class="flex-4-col" id="counsellor_row1">
            <select class="form-control" name="counsellor">
                <option disabled>Select a Facilitator</option>
                @foreach ($counsellor as $key => $couns)
                <option value="{{$key}}">{{$couns}}</option>
                @endforeach
            </select>
        </div>
    </div>

    <input type="submit" value="Add counsellor">
</form>

с использованием url:

<form action="{{ url('admin/support-groups/add-counsellor/'.$data->id) }}" method="post">
        {{ csrf_field() }}
        <div class="flex-grid__section">
            <label for="counsellor" class="flex-2-col control-label">{{ trans('Add additional Facilitator') }}</label>
            <div class="flex-4-col" id="counsellor_row1">
                <select class="form-control" name="counsellor">
                    <option disabled>Select a Facilitator</option>
                    @foreach ($counsellor as $key => $couns)
                    <option value="{{$key}}">{{$couns}}</option>
                    @endforeach
                </select>
            </div>
        </div>

        <input type="submit" value="Add counsellor">
    </form>

В функции route у вас просто естьчтобы дать имя маршруту, который вы определили с помощью ->name('route.blah');, а затем передать параметр для маршрута, в то время как в методе url вы можете пройти весь маршрут и затем добавить параметр с помощью конкатенации.я предпочитаю route метод, потому что он легкий и простой.

0 голосов
/ 22 октября 2018

В вашем теге формы есть ошибка: должно быть action=, а не только action. Вместо отправки полного URL-адреса в действии используйте функцию url(), как показано ниже

<form action="{{ url('admin/support-groups/add-counsellor/'.$data->id) }}" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...