Laravel 5.7 MethodNotAllowedHttpException - PullRequest
0 голосов
/ 12 ноября 2018

Я получаю сообщение об ошибке MethodNotAllowedHttpException при попытке обновить сообщение.Так что я погуглил ошибку и обнаружил метание мета-метания MethodNotAllowedHttpException , но мне объяснили, что мне нужно сделать маршрут запросом поста, где действия моей формы выполняются, но это уже пост, и он продолжает выдавать ту же ошибкуи я не могу понять, есть ли ошибка в виде web.php или самого контроллера

edit.blade.php

    <form method="POST" action="/posts/{{ $post->id }}/edit">

        {{ csrf_field() }}
        @method('PUT')

        <div class="form-group">
            <label for="title">Title:</label>
            <input type="text" class="form-control" id="title" name="title" value="{{ $post->title }}">
        </div>

        <div class="form-group">
            <label for="body">Body:</label>
            <textarea id="body" name="body" class="form-control" rows="10">
                {{
                $post->body
                }}
            </textarea>
        </div>

        <div class="form-group">

            <button type="submit" class="btn btn-primary">Edit</button>

        </div>

        @include('layouts.errors')

    </form>

Web.php

Route::get('/', 'PostsController@index')->name('home');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{post}', 'PostsController@show');
Route::get('/posts/{post}/edit', 'PostsController@edit');
Route::post('/posts/{post}/edit', 'PostsController@update');
Route::get('/posts/{post}/delete', 'PostsController@destroy');

PostsController.php (эта часть важна для контроллера, если вы хотите, чтобы я разместил контроллер отверстия, дайте мне знать)

public function edit(Post $post)

{

    return view('posts.edit', compact('post'));

}

public function update(Request $request, Post $post)

{

    $request->validate([

        'title' => 'required',

        'body' => 'required'
    ]);

    $post->update($request->all());

    return redirect('/')->with('succes','Product updated succesfully');

}

Ответы [ 4 ]

0 голосов
/ 18 февраля 2019

Laravel вызовет исключение MethodNotAllowedHttpException также, если форма ошибочно размещена таким образом в таблице:

<table><form><tr><td>...</td></tr></form><table>

вместо этого:

<table><tr><td><form>...</form></td></tr></table>
0 голосов
/ 12 ноября 2018

Вы должны попробовать это:

Просмотр файла :

<form method="POST" action="{{ route('post.update',[$post->id]) }}">

        {{ csrf_field() }}


        <div class="form-group">
            <label for="title">Title:</label>
            <input type="text" class="form-control" id="title" name="title" value="{{ $post->title }}">
        </div>

        <div class="form-group">
            <label for="body">Body:</label>
            <textarea id="body" name="body" class="form-control" rows="10">
                {{
                $post->body
                }}
            </textarea>
        </div>

        <div class="form-group">

            <button type="submit" class="btn btn-primary">Edit</button>

        </div>

        @include('layouts.errors')

    </form>

Ваш маршрут

Route::post('/posts/{post}/edit', 'PostsController@update')->name('post.update');
0 голосов
/ 17 ноября 2018

Эта проблема заняла у меня 1 неделю, но я решил ее с маршрутизацией

В edit.blade.php

{!! Form::open([route('post.update',[$post->id]),'method'=>'put']) !!}
 <div class="form-group">
        <label for="title">Title:</label>
        {!! Form::text('title',$post->title,['class'=>'form-control',
        'id'=>'title']) !!}
 </div>
 <div class="form-group">
        <label for="body">Body:</label>
        {!! Form::textarea('body', $post->body, ['id' => 'body', 'rows' => 10, 
        class => 'form-control']) !!}
 </div>
 <div class="form-group">
    {!! Form::submit('Edit',['class'=>'btn btn-block bg-primary',
    'name'=>'update-post']) !!}
 </div>
{!! Form::close() !!}
@include('layouts.errors')

В Web.php

Route::resource('posts','PostsController');
Route::get('/posts/{post}/delete', 'PostsController@destroy');
Route::put('/posts/{post}/edit',['as'=>'post.update',
           'uses'=>'PostController@update']);
Route::get('/', 'PostsController@index')->name('home');
0 голосов
/ 12 ноября 2018

Вы отправляете форму с методом put, определяя, что @method('PUT') сделает маршрут пут.Либо определите маршрут для метода put, подобного этому Route::put('/posts/{post}/edit', 'PostsController@update');, либо удалите @method('PUT') из файла блейда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...