routes - Laravel 5 : how to put admin controllers in a folder?

标签 routes namespaces laravel-5 controllers

我正在 Laravel 5 中创建我的第一个管理面板。我想组织我的 Controller ,如:

Http
    Controllers
        Admin
            DashboardController.php
        Controller.php
        WelcomeController.php

但是我在让它工作时遇到了一些麻烦。

DashboardController.php 是:
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class DashboardController extends Controller {

    public function index()
    {
        return \View::make('admin/dashboard');
    }
}

?>

我的路线包含:
Route::group(array('namespace'=>'Admin'), function()
{
    Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
});

// Eventually I will check for authentication using:
// Route::group(array('before' => 'auth', 'namespace'=>'Admin'), function()...

当我导航到/dashboard 时,我得到的错误是:

Class App\Http\Controllers\Admin\DashboardController does not exist



有什么建议?谢谢!

最佳答案

有一种误解认为 Laravel 5 现在强制使用特殊的文件夹结构。

但是 不,它没有

您的代码的问题是:

Route::group(array('namespace'=>'Admin'), function()
{
    Route::get('/dashboard', 
    array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
});

您正在使用命名空间 Admin在您的 Controller 中,没有这样的命名空间。因此,laravel 会提示。

如果你删除这个 array('namespace=>'Admin') ,您的代码将运行良好。

但是如果你想保留命名空间,那么有一种方法,
<?php

namespace App\Http\Controllers\Admin; \\Add the admin part.

use App\Http\Controllers\Controller;

class DashboardController extends Controller {

    public function index()
    {
        return \View::make('admin/dashboard');
    }
}

?>

现在,它将可以访问。

注释 #1:但这并不意味着 DashboardController 必须驻留在 admin文件夹

事实上,它可以留在任何文件夹中。 只要你保持正确的命名空间 它与以前的版本相同。你需要做的就是运行一个
composer dump-autoload -o
or
php composer.phar dump-autoload -o

并且 Composer 将在自动加载中添加文件。

关于routes - Laravel 5 : how to put admin controllers in a folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151502/

相关文章:

ubuntu - 如何解决 ubuntu 中 phantom js 的权限被拒绝错误?

php - 拉维尔 : Load relationships and specific columns

javascript - 在angularjs中动态路由url路径

python - 使用 Flask 蓝图,如果指定了子域,如何修复 url_for 不被破坏?

xampp 上的 PHP 自动加载命名空间

javascript - 带有 laravel 的 angular js $http post

mysql - Node Express MySQL 多路由

javascript - 如何从给定的外部url获取数据 session id和所有内容,而不是从 Angular 6中的我的应用程序(路由)获取

language-agnostic - 命名空间/包/模块的历史?

c++ - 命名空间上的变量总是有默认值吗?