【问题标题】:Method App\Http\Controllers\EspecialidadesController::show does not exist方法 App\Http\Controllers\EspecialidadesController::show 不存在
【发布时间】: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 在回答您在第一条评论中喜欢的问题时所说的,但据我所知,这意味着我需要为每种方法找到一条路线。有没有办法保留资源路线?

标签: php laravel laravel-8


【解决方案1】:

在您的web.php 中尝试使用此代码:

use App\Http\Controllers\EspecialidadesController;

Route::resource('especialidades', EspecialidadesController::class);

查看代码

<form method="post" action="{{ route('especialidades.update', $especialidad) }}">
    @csrf
    @method('PUT')

</form>

注意:如果您遇到同样的错误,请尝试运行以下命令:

composer dump-autoload

php artisan route:clear

【讨论】:

  • 抱歉控制器是 EspecialidadesController。另外为什么需要删除路线中的 / ?
  • 现在我测试了它并且它工作了,我需要的唯一更改是视图代码、表单中的 post 方法和表单中的 @method(put)。感谢您的帮助@Hedayatullah
  • @DiegoUtreras 没问题。
猜你喜欢
  • 2020-09-01
  • 2019-12-22
  • 2018-05-25
  • 2021-04-04
  • 2020-05-08
  • 2017-08-01
  • 1970-01-01
  • 2020-10-15
  • 2023-03-17
相关资源
最近更新 更多