Laravel редактирование приложения показывает исключение MethodNotAllowedHttpException - PullRequest
0 голосов
/ 12 января 2020
<form action="{{ route[('update'), $user->id]}}" method="post" style="border:1px solid #ccc">
{{ method_field('POST') }}

это мои два маршрута для редактирования и обновления.

Route::get("{id}/edit", 'HomeController@edit')->name('edit');
Route::post('update', 'HomeController@update')->name('update');

Это мой контроллер

public function update(Request $request, $id){
    $arr = User::find($id);
        $name->name = $request->input('name');
        $email->email = $request->input('email');
        $password->password = $request->input('password');
    $arr->save();
return redirect('/');
}

Это мой контроллер редактирования

public function edit($id){
    $user_id = auth()->user()->id;
    $user = User::find($user_id);
    return view("edit")->with('user');
}

Ответы [ 3 ]

1 голос
/ 12 января 2020

Возможно, это потому, что в вашей форме нет поля csrf. добавьте этот скрытый ввод в вашу форму.

<form action='{{ url("update/$user->id") }}' method='post'>
    <input type="hidden" 
           name="_token" 
           id="csrf-token" value="{{ Session::token() }}" />
    .
    .
    .
    <!--the rest of your form-->
    </form>
1 голос
/ 12 января 2020

Вам необходимо указать параметры в URL-маршруте.

Route::post('update/{id}', 'HomeController@update')->name('update');

Ваш маршрут также неверен. Это должно быть

<form action="{{ route('update', [  'id' =>$user->id])}}" method="post" style="border:1px solid #ccc">

Кроме того, нет необходимости использовать method_field() для POST запросов, они используются для PATCH и DELETE запросов.

В качестве стороны обратите внимание, если ваша цель - обновить существующую запись, рекомендуется использовать запрос PATCH. (Просто стандартизированный способ сделать это)

0 голосов
/ 12 января 2020
// Edit link
<a href="{{ route('admin.tag.edit',$tag->id) }}" class="btn btn-info waves-effect">
                                                   <i class="material-icons">edit</i>
                                               </a>

// blade file
<form method="POST" action="{{ route('admin.tag.update',$tag->id) }}">
                                                @csrf
                                                @method('PUT')
                                                <div class="form-group form-float">
                                                    <div class="form-line">
                                                        <input value="{{ old('name') }}{{ $tag->name }}" name="name" type="text" class="form-control">
                                                        <label class="form-label">{{ __('Name') }}</label>
                                                    </div>
                                                </div>
                                                <br>

                                                <a href="{{ route('admin.tag.index') }}"  
                            class="btn btn-danger m-t-15 waves-effect">{{ __('BACK') }}</a>
                                                <button type="submit" class="btn btn-primary m-t-15 waves-effect">{{ __('SUBMIT') }}</button>
                                            </form>

// Route 
Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){
    Route::resource('tag','TagController');
});

// Controller 
  public function edit($id)
    {
        $tag = Tag::find($id);
        return view('admin.tag.edit',compact('tag'));
    }
 public function update(Request $request, $id)
    {
        $this->validate($request,[
            'name' => 'required'
        ]);

        $tag = Tag::find($id);
        $tag->name = $request->name;
        $tag->slug = str_slug($request->name);
        $tag->save();
        Toastr::success('Tag Successfully Updated','Success');
        return redirect()->route('admin.tag.index');
    }
...