Laravel 5.1嵌套控制器类未找到。

3

Laravel文档清楚地描述了如何更改路由以便在文件夹中嵌套控制器。看起来非常简单,但我仍然遇到错误。下面是错误信息:

"类App\Http\Controllers\Input\InputController不存在"

^这个路径对我来说看起来是100%正确的,怎么回事?

文件结构:
-控制器
--身份验证
--输入
---InputController.php

路由:

Route::get('input', 'Input\InputController@getInput');  

输入控制器:

<?php namespace App\Http\Controllers;

use Illuminate\Http\Response;

class InputController extends Controller
{
    public function getInput()
    {
        return response()->view('1_input.input_form');
    }
}

感谢您的帮助!
3个回答

3

将控制器命名空间从

namespace App\Http\Controllers

to

namespace App\Http\Controllers\Input

谢谢!此外,我还添加了一行代码:“use App\Http\Controllers\Controller”。 - user3023925

1
  1. namespace needs to be changed to the directory your controller is in 'App\Http\Input'
  2. You need to pull in Controller with use App\Http\Controllers\Contoller so that you can extend it.

    <?php
    
     namespace App\Http\Controllers\Input;
     use App\Http\Controllers\Controller;  // need Controller to extend  
    
     use Illuminate\Http\Response;
    
     class InputController extends Controller
     {
         public function getInput()
         {
           return response()->view('1_input.input_form');
         }
     }
    

0

你应该尝试从终端(shell/prompt)在你的基础目录中运行几个命令:

composer dump-autoload

或者如果您没有将Composer设置为可执行文件:

php composer dump-autoload

然后:

php artisan clear-compiled

这样你的Laravel将会重新“从头开始”准备一切,应该能够找到丢失的控制器类。

基本上,Laravel会生成一些额外的文件以加快启动速度。如果你定义了一个新的类,它不会被包含在那个“编译”的文件中。这种方式可以让你的类“介绍”给框架。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接