【问题标题】:Class Controller does not exist in LaravelLaravel 中不存在类控制器
【发布时间】: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 是否解决了这个问题,因为我也面临这个问题并且没有找到任何解决方案。 :-(

标签: php laravel controller laravel-routing


【解决方案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/ 目录。

        【讨论】:

        • 嗨,我关注了这一切,而我得到的 BadMethodCallException 方法 [show] 不存在。
        • 你能提供你的路线列表吗?您可以使用命令行命令执行此操作:php artisan route:list
        • 编辑:我想我遇到了你的问题:你正在访问带有如下 URL 的页面:www.yoursite.com/ip/something 然后 laravel 认为你想要 显示 之一ip,它通过你的Controller中的show方法处理(当使用Route::resource的好处时),这确实不存在......
        • 嗨,但我也尝试使用这条路线 Route::get("index","IpController@index");但还是同样的问题
        • 给您带来这个问题的页面的 URL 是什么?
        猜你喜欢
        • 2018-07-15
        • 2019-02-05
        • 2015-04-21
        • 2014-05-29
        • 2015-04-20
        • 2019-03-26
        • 2014-11-11
        • 2020-12-27
        相关资源
        最近更新 更多