Laravel 中不存在类控制器

Posted

技术标签:

【中文标题】Laravel 中不存在类控制器【英文标题】:Class Controller does not exist in Laravel 【发布时间】:2015-05-23 15:26:04 【问题描述】:

我是 Laravel 的新手,我只是在关注一些教程博客,但我还处于早期阶段。

这是我的路线

Route::resource('ip', 'IpController');
Route::get("index","IpController@view");

这是我的控制器

<?php

class IpController extends BaseController 


    public function index()
    
        return View::make('hello');
    


这是我访问页面的方式

<a href=" URL() /ip/index">IP</a>

我按照教程所说的去做,但我很困惑为什么我在访问页面时遇到了这个错误。

类 IpController 不存在

我可以知道我做错了什么,我该如何解决?蒂亚!

【问题讨论】:

每当你创建一个新类时,运行 composer dump-autoload (当然,如果你没有遵循 psr-4)。 @Dave 是否解决了这个问题,因为我也面临这个问题并且没有找到任何解决方案。 :-( 【参考方案1】:

我在使用 Lumen 而不是 Laravel 时遇到了这个问题。所以我认为在这里回答也会对那些偶然发现这个页面的人有所帮助。如果这不符合 SO 规则,我提前道歉。

这是我在 Lumen 中遇到的错误:

lumen.ERROR: exception 'ReflectionException' with message 'Class Controller does not exist' 

解决方法是:定义路由时,使用控制器的全路径:

$app->get('/someRoute/', 'App\Http\Controllers\Controller@index');

【讨论】:

【参考方案2】:

添加命名空间。

<?php namespace App\Http\Controllers;

class IpController extends BaseController 


    public function index()
    
        return View::make('hello');
    


【讨论】:

【参考方案3】:

在 CLI 中运行以下命令:

composer dump autoload

并删除第二条路线,因为它不是必需的,因为它已经在您的 Resource 路线中声明。 并改变

class IpController extends BaseController进入

class IpController extends eController 如果你使用的是 Laravel 5.0。

【讨论】:

【参考方案4】:
Route::resource('ip', 'IpController');

会自动创建

Route::get("ip","IpController@index");

为了你,还有many more helpful routes。

然后你可以像这样创建它的链接:

<a href=" URL('ip') ">IP</a>

(因为自动生成的路由是 Route::resource 仅使用 www.mysite.com/ip 作为“ip”的“索引页”。

另外,在 laravel 5 中,请确保您的控制器位于:yourapp/app/Http/Controllers/ 目录。

phplaravellaravel-5

【讨论】:

嗨,我关注了这一切,而我得到的 BadMethodCallException 方法 [show] 不存在。 你能提供你的路线列表吗?您可以使用命令行命令执行此操作:php artisan route:list 编辑:我想我遇到了你的问题:你正在访问带有如下 URL 的页面:www.yoursite.com/ip/something 然后 laravel 认为你想要 显示 之一ip,它通过你的Controller中的show方法处理(当使用Route::resource的好处时),这确实不存在...... 嗨,但我也尝试使用这条路线 Route::get("index","IpController@index");但还是同样的问题 给您带来这个问题的页面的 URL 是什么?

以上是关于Laravel 中不存在类控制器的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Laravel 8.1 中创建一个普通控制器(--plain 在新版本中不存在)[关闭]

解决未捕获的ReflectionException:C: ... Container.php中不存在类日志:

我的控制器在 laravel 项目中不起作用我面临这个错误“Class App\Http\Controllers\HelloController 不存在”

目标类控制器不存在 - Laravel 8

ReflectionException Class App\Controller\MyController 在 laravel 中不存在错误

Laravel 中不存在方法 Illuminate\Auth\SessionGuard::users