【发布时间】:2021-06-27 00:00:39
【问题描述】:
如果我不尝试访问 show 功能,我不知道为什么会收到错误消息。将发布视图、控制器和路由的代码。
查看代码
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Editar Especialidad</h1>
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
{{ __('Register') }}
</div>
<div class="card-body">
<form method="PUT" action="{{ route('especialidades.update', $especialidad) }}">
@csrf
<div class="form-group row">
<label for="nombre" class="col-md-4 col-form-label text-md-right">
{{ __('Nombre') }}
</label>
<div class="col-md-6">
<input id="nombre" type="text" class="form-control @error('nombre') is-invalid @enderror" name="nombre" value="{{ $especialidad->nombre }}" required autocomplete="nombre" autofocus>
@error('nombre')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Editar') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
控制器代码
public function update(Request $request, $id) {
$especialidad = Especialidades::findOrFail($id);
$especialidad->fill($request->all());
if($especialidad ->save()) {
return redirect()->route('especialidades.index');
} else {
return redirect()->route('especialidades.update');
}
}
路线
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::resource('/especialidades', EspecialidadesController::class);
Route::get('/gestionarMedicos', [PersonaController::class,'mostrarMedicos'])->name('personaMostrarMedicos');
这是我得到的完整错误
Method App\Http\Controllers\EspecialidadesController::show does not exist.
如果我不调用它,我不知道它为什么要尝试访问 show 方法。
Rickdenhaan 的问题没有回答我的问题,因为在那个问题中,他们建议更改路线,但不知道这是否也能解决问题,但我标记为正确的答案解决了问题,它需要较少的更改而不是更改我的路线如我所愿。
【问题讨论】:
-
这能回答你的问题吗? Laravel : Method [show] does not exist
-
您是否使用 make:controller EspecialidadesController --resource 命令创建了 EspecialidadesController?
-
@Prospero 我在创建模型时创建了控制器,但不是作为资源
-
@rickdenhaan 我已阅读该问题的答案。那么您是否建议不要使用资源路由并为控制器的所有不同方法创建路由?
-
从我所看到的@rickdenhaan 来看,即使我告诉视图使用更新功能,控制器也会尝试使用显示功能,因为如果我创建一个不执行任何操作的显示功能,错误就会消失。我认为它正在发生 Kryten 在回答您在第一条评论中喜欢的问题时所说的,但据我所知,这意味着我需要为每种方法找到一条路线。有没有办法保留资源路线?