如何将控制器放入 Laravel 5.1.3 的文件夹中?

Gau*_*mar 3 php laravel laravel-routing laravel-5

我是 Laravel 的新手。我试图通过将控制器放入文件夹中来组织控制器,但它似乎不起作用。

我的文件夹结构是这样的:

/app
    /Http
        /Controllers
            /Admin
                ShowDashboard.php
Run Code Online (Sandbox Code Playgroud)

我的ShowDashboard.php文件是这样的:

<?php namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;

class ShowDashboard extends Controller {

    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return Response
     */
    public function init()
    {
        return 'Hi there!';
    }

}
Run Code Online (Sandbox Code Playgroud)

我的路线是这样的

Route::get('/admin', 'Admin\ShowDashboard@init');
Run Code Online (Sandbox Code Playgroud)

当我尝试访问http://localhost:8000/admin时,出现以下错误:

App\Http\Controllers\Admin\ShowDashboard不存在

我的自动加载器部分:

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    }
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

小智 5

创建控制器的最佳方法是使用内置的 Laravel 实用程序 Artisan。从命令提示符中,浏览到 laravel 项目所在的目录。例如:c:\development\htdocs\www.example.dev

在提示符下,输入:php artisan make:controller admin/showDashboard --plain

这将在控制器下的 admin 目录中生成一个名为 showDashboard.php 的文件。该文件默认包含以下代码:

<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class showDashboard extends Controller
{
    //
}
Run Code Online (Sandbox Code Playgroud)

现在您已经创建了控制器,添加一个 init 方法:

public function init()
{
    return 'Hi there!';
}
Run Code Online (Sandbox Code Playgroud)

你的控制器现在看起来像这样:

<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class showDashboard extends Controller
{
    public function init()
    {
        return 'Hi there!';
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在 paths.php 中设置路由,如下所示:

route::get('admin', 'admin\showDashboard@init');
Run Code Online (Sandbox Code Playgroud)

保存您的工作,然后启动您的页面。当浏览到 www.example.dev/admin 时,您应该看到以下消息:嗨!

我希望这有帮助!