【发布时间】: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()->slug?您可以简单地在控制器上获取它 -
完整的控制器文件是什么样的?什么是命名空间?文件名是什么,它在文件结构中的什么位置?
-
你好,现在我把UsuarioController.php的全部完整代码放上去