【问题标题】:BadMethodCallException Method App\Http\Controllers\UsuarioController::update does not existBadMethodCallException 方法 App\Http\Controllers\UsuarioController::update 不存在
【发布时间】:2021-04-20 12:48:49
【问题描述】:

我是 Laravel 的新手(我正在使用版本 8),并且我一直在审查这个错误很长时间,我不知道还有什么可以尝试的。 我有一个名为 ** UserController.php ** 的资源控制器,我在 ** web.php ** 中设置路径如下: Route::resource('usuarios', App\Http\Controllers\UsuarioController::class);

资源路径是:

用户可以通过这个调用控制器的 edit() 方法的菜单选项输入他们的个人资料并修改他们的字段:

到目前为止一切正常,但是当用户在**edit.blade.php**表单中进入编辑,并选择调用方法**update()**的“更新”按钮时控制器,它跳给我错误:BadMethodCallException 方法 App\Http\Controllers\UsuarioController::update 不存在。

这是edit.blade.php


@section('title', 'Mi Perfil')
 

@section('intro')  



@endsection

<br><br>
<style type="text/css">

h5 {text-align: center}
nav.navbar {
    background-color: #34495E;
}
</style>


 

@section('content0')

<div class="container3">

 <div class="bShadow3 bShadow-33">

    
                    <form method="POST" action="{{route('usuarios.update',[Auth::user()->slug]) }}">
                        @method('PUT')
                        @csrf
                        <br>
                        <h5>Mi perfil</h5>
                           
                        <div class="form-group ml-5 mr-5">
                            <label for="name">{{ __('Nombre de usuario') }}</label>
                            <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{Auth::user()->name}}" autocomplete="name" maxlength="30" autofocus placeholder="Introduce tu nombre de usuario" required>
                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                        </div>

                        <div class="form-group ml-5 mr-5">
                            <label for="name">{{ __('Dirección de correo:') }}</label><br>
                            <label for="email">{{Auth::user()->email}}</label>
                           
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col text-center">
                                <button type="submit"  class="btn2 mt-2 mb-3">
                                    {{ __('Actualizar') }}
                                </button>
                                <button type="default" class="btn2 mt-2 mb-3">
                                    {{ __('Cancelar') }}
                                </button>

                            </div>
                        </div>
                    </form>



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

这是 UsuarioController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
use App\Models\Role;


class UsuarioController extends Controller
{
   
    public function __construct()
    {
        //permitir solo usuarios autenticados
        $this->middleware('auth');
    }



    public function index()
    {
        //
    }

   

    public function create()
    {
        //
    }

   
    public function store(Request $request)
    {
        

    }

    
    public function show($id)
    {
         
    }

    
    public function edit($id)
    {
       $usuario=User::find($id);
       if ($usuario== null)
            return Redirect::to('usuario');
 
        return view('usuarios.edit')->with('id',$id);
   
    }

    

    public function update(Request $request, $id)
    {
       $user = User::find($id);
       $user->name = Input::get('name');
       $user->email = Input::get('email');
       $user->password = Input::get('password');      
       $user->save();  
    }  

   
    public function destroy($id)
    {
        //
    }



    
}

如果有人能帮帮我,我会非常感谢他们!

【问题讨论】:

  • 为什么刀片路由方法需要调用Auth::user()-&gt;slug?您可以简单地在控制器上获取它
  • 完整的控制器文件是什么样的?什么是命名空间?文件名是什么,它在文件结构中的什么位置?
  • 你好,现在我把UsuarioController.php的全部完整代码放上去

标签: php laravel laravel-8


【解决方案1】:

我不知道问题出在哪里,但我认为

1:改变路线

{{route('usuarios.update',auth()->user()) }}

2:它需要一个模型,但你发送 slug usuarios/{usuario}

【讨论】:

    【解决方案2】:

    感谢您的回答,我已经修复了错误。

    我有两个控制器使用同一个控制器类,我使用一个控制器,而 laravel 使用另一个控制器。

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2019-12-22
      • 1970-01-01
      • 2018-05-25
      • 2021-04-04
      • 2020-05-08
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多