Метод ИСПРАВЛЕНИЯ не поддерживается для этого маршрута. при отправке второй формы

#laravel #forms

#laravel #формы

Вопрос:

Я работал над системой CMS для веб-сайта, который я создаю, и все шло хорошо, пока я не добавил 2 формы на одну страницу (обе обновляют разные вещи), и все же это по-прежнему выдает мне ошибку в заголовке, в то время как другая форма работает нормально?

Ошибка возвращается на баннере страницы, и «обычное» обновление работает нормально!

Web.php

 Route::patch('/beheer/paginas/{product}', 'PageController@update')->middleware('auth')->name('beheer.pages.update');
Route::patch('/beheer/paginas/update-banner/{product}', 'PageController@update-banner')->middleware('auth')->name('beheer.pages.banner.update');
 

Также в php artisan route:list показано, что это маршрут метода ИСПРАВЛЕНИЯ.

Мое мнение:

 @extends('layouts.beheer')

@section('content')
    <div class="container-fluid">
        <div class="row justify-content-center">
            <div class="col-md-6">
                <div class="card">
                    <div class="card-header">
                        <div class="d-inline card-title">Pagina bewerken</div>
                        @if ($errors->any())
                            <div class="alert alert-danger">
                                <ul>
                                    @foreach ($errors->all() as $error)
                                        <li>{{ $error }}</li>
                                    @endforeach
                                </ul>
                            </div>
                        @endif
                    </div>

                    <div class="card-body">
                        <form action="{{ route('beheer.pages.update', $page->id) }}" method="POST" enctype="multipart/form-data">
                            @csrf
                            {{ method_field('PATCH') }}
                            <div class="form-group">
                                <label>Zichtbaarheid:</label>
                                <select class="custom-select" name="page_hidden">
                                    <option value="0" @if (!$page->page_hidden) selected @endif>Zichtbaar</option>
                                    <option value="1" @if ($page->page_hidden) selected @endif>Verborgen</option>
                                </select>
                            </div>
                            <div class="form-group">
                                <label>Pagina naam:</label>
                                <input type="text" name="page_name" value="{{ $page->page_name ? $page->page_name : old('page_name') }}" class="form-control" placeholder="Pagina naam">
                            </div>
                            <div class="form-group">
                                <label>Pagina tekst:</label>
                                <textarea name="page_text" class="form-control">{{ $page->page_text ? $page->page_text : old('page_meta_title') }}</textarea>
                            </div>
                            <div class="form-group">
                                <label>Pagina title SEO:</label>
                                <input type="text" name="page_meta_title" value="{{ $page->page_meta_title ? $page->page_meta_title : old('page_meta_title') }}" class="form-control" placeholder="Pagina titel SEO">
                            </div>
                            <div class="form-group">
                                <label>Pagina beschijving SEO:</label>
                                <input type="text" name="page_meta_description" value="{{ $page->page_meta_description ? $page->page_meta_description : old('page_meta_description') }}" class="form-control" placeholder="Pagina beschijving SEO">
                            </div>
                            <button type="submit" class="btn btn-primary float-right">Opslaan</button>
                        </form>
                    </div>
                </div>
            </div>
            <div class="col-md-6">
                <div class="card">
                    <div class="card-header">
                        <div class="d-inline card-title">Banner</div>
                        @if ($errors->any())
                            <div class="alert alert-danger">
                                <ul>
                                    @foreach ($errors->all() as $error)
                                        <li>{{ $error }}</li>
                                    @endforeach
                                </ul>
                            </div>
                        @endif
                    </div>

                    <div class="card-body">
                        <form onsubmit="{{ route('beheer.pages.banner.update', $page->id) }}" method="POST" enctype="multipart/form-data">
                            @csrf
                            {{ method_field('PATCH') }}
                            <input type="hidden" name="image_section_banner" value="1">
                            <input type="hidden" name="page_id" value="{{ $page->id }}">

                            <div class="form-group">
                                <img src="{{ asset($page_banner ? $page_banner->image_large_url : asset('assets/img/banner-home.jpg')) }}" class="img-fluid" style="max-height:250px;">
                            </div>

                            <div class="form-group">
                                <label>Afbeelding:</label>
                                <input type="file" name="image" value="{{ old('image') }}" class="form-control">
                            </div>
                            <button type="submit" class="btn btn-primary float-right">Opslaan</button>
                        </form>
                    </div>
                </div>

            </div>
        </div>
    </div>
@endsection
 

Если потребуется какая-либо дополнительная информация, пожалуйста, дайте мне знать!

Ответ №1:

На вашем 2-м отсутствует атрибут <form> . Вот что у вас есть:

 <form onsubmit="{{ route('beheer.pages.banner.update', $page->id) }}" ...>
 

Но это должно выглядеть так:

 <form action="{{ route('beheer.pages.banner.update', $page->id) }}" ...>
 

Поскольку вы не указали action атрибут, он отправляется на текущий URL-адрес, для которого, вероятно, не patch определен маршрут.

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

1. Вау, спасибо, приятель, я смотрю на мой код уже около 2 часов 🙂