【问题标题】:Class App/Http/Controllers/View Not Found error类 App/Http/Controllers/View Not Found 错误
【发布时间】:2015-05-09 23:56:12
【问题描述】:

我是 laravel 5 的新手,目前被这个错误难住了:

FatalErrorException in TicketController.php line 18: Class 'App\Http\Controllers\View' not found

奇怪的是视图确实存在,我检查了路由是否确实路由到正确的控制器,并且当我尝试这样做时弹出错误:

return View::make('tickets.bus.index');

要么是我在某处犯了错误,要么是实现与 laravel 4 不同

【问题讨论】:

    标签: laravel-5


    【解决方案1】:

    问题不在于实际视图,而在于 View。您会看到,当您只引用 View::make('tickets.bus.index') 之类的类时,PHP 会在 当前命名空间 中搜索该类。

    在本例中为App\Http\Controllers。但是 View 类显然不存在于控制器的命名空间中,而是存在于 Laravel 框架命名空间中。它还有一个位于 global 命名空间中的别名。

    您可以通过添加反斜杠来引用根命名空间中的别名:

    return \View::make('tickets.bus.index');
    

    或者在顶部添加import语句:

    use View;
    

    【讨论】:

    • @lukeasgeiter,您更喜欢在控制器方法中使用/View::make() 还是use View 声明?
    • @musicliftsme 绝对是use View。或者甚至可能是 view() 辅助函数。
    【解决方案2】:

    在全局命名空间中有一个辅助函数view(),可以用来简化语法:

    return view('tickets.bus.index');

    使用此方法,无需包含use View; 或包含根命名空间,例如\View

    lukasgeiter 解释的概念对于理解 Laravel 至关重要,即使您选择使用辅助函数。

    【讨论】:

      【解决方案3】:

      对我来说,这是命名空间问题。我使用 php artisan 创建控制器,但似乎 php artisan 使用了不同的命名空间(可能我必须更改 composer.json 中的某些内容来修复它,但我在 laravel 中是全新的)

      Whoops, looks like something went wrong. FatalErrorException in PagesController.php line 11: Class 'App\Http\Controllers\Controller' not found 很好,我正在使用 phpStorm,它会自动插入正确的命名空间

      确保正确签出命名空间。这就是我使用 php artisan 创建控制器的方式

      命名空间 App\Http\Controllers; 使用 App\Http\Requests; 使用 App\Http\Controllers\Controller; //php工匠插入。 类 PagesController 扩展控制器 { 公共函数索引(){ 返回视图('索引'); } 公共函数 about(){ 返回视图('pages.about'); } }

      这就是我手动编写扩展控制器后phpstorm插入的方式

      命名空间 App\Http\Controllers; 使用 App\Http\Requests; 使用照明\路由\控制器; //我手动写了extends Controller并选择了这个命名空间 类 PagesController 扩展控制器 { 公共函数索引(){ ...

      【讨论】:

        【解决方案4】:

        在 Laravel 5.1 中,正确的 use 代码是:

        use Illuminate\Support\Facades\View;

        【讨论】:

        • 谢谢,我已经解决了问题。你能帮我一个忙吗?我在资源指令中有 js 和 css 文件(包含资产、视图、土地目录的资源目录)。我需要从views/index.html 加载js 和css 文件。请帮帮我。
        • 在 laravel 6.2 中试试这个,它对我有用,非常感谢
        【解决方案5】:

        在全局命名空间中有一个辅助函数view(),可以用来简化语法:

        返回视图('tickets.bus.index');

        With this method, it is unnecessary to include use View; or include the root namespace, e.g., \View.
        

        lukasgeiter 解释的概念对于理解 Laravel 至关重要,即使您选择使用辅助函数。

        【讨论】:

          猜你喜欢
          • 2018-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-01
          • 1970-01-01
          • 2020-03-31
          相关资源
          最近更新 更多