【问题标题】:Laravel 5.1 nested controller class not found未找到 Laravel 5.1 嵌套控制器类
【发布时间】:2015-07-08 05:07:34
【问题描述】:

Laravel 文档清楚地描述了如果将控制器嵌套在文件夹中,如何更改路由。看起来真的很简单,但我仍然遇到错误。这是错误:

“类 App\Http\Controllers\Input\InputController 不存在”

^这条路径对我来说是 100% 正确的。什么给了?

文件结构:
-控制器
--认证
--输入
---输入控制器.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');
    }
}

感谢您的帮助!

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    从

    更改控制器命名空间
    namespace App\Http\Controllers
    

    到

    namespace App\Http\Controllers\Input
    

    【讨论】:

    • 谢谢!另外,我还加了一行“使用App\Http\Controllers\Controller”
    【解决方案2】:
    1. namespace 需要更改为您的控制器在 'App\Http\Input' 中的目录
    2. 你需要使用 App\Http\Controllers\Contoller 来拉入 Controller 以便你可以扩展它。

      <?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');
           }
       }
      

    【讨论】:

      【解决方案3】:

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

      composer dump-autoload
      

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

      php composer dump-autoload
      

      然后:

      php artisan clear-compiled
      

      这样,您的 laravel 将“从头开始”重新准备所有内容,并且应该能够找到丢失的控制器类。

      基本上 laravel 会生成一些额外的文件来加快启动速度。如果您定义一个新类,它不会包含在该“编译”文件中。这样你的类应该被“引入”到框架中。

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 2015-10-13
        • 2019-07-12
        • 2016-03-18
        • 2016-01-08
        • 1970-01-01
        • 2013-01-18
        • 2019-12-12
        • 1970-01-01
        相关资源
        最近更新 更多