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

Php 如何将控制器放入laravel 5.1.3中的文件夹中?,php,laravel,laravel-5,laravel-routing,Php,Laravel,Laravel 5,Laravel Routing,我是拉雷维尔的新手。我试图通过将控制器放入文件夹来组织控制器,但它似乎不起作用 我的文件夹结构如下所示: /app /Http /Controllers /Admin ShowDashboard.php <?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; class ShowDashboard e

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

我的文件夹结构如下所示:

/app
    /Http
        /Controllers
            /Admin
                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!';
    }

}
<?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!';
    }
}
我的ShowDashboard.php文件如下所示:

/app
    /Http
        /Controllers
            /Admin
                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!';
    }

}
<?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!';
    }
}
当我尝试访问时,出现以下错误:

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

我的自动导航部分:

"autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    }

我遗漏了什么吗?

我看不出你发布的内容有什么问题。如果您在composer.json中更改了名称空间到文件夹的映射,请确保运行了“composer dump autoload”命令。

我不知道为什么会发生这种情况,但在我的路径中添加它可以修复它

Route::group(['namespace' => 'Admin'], function()
{
    // Controllers Within The "App\Http\Controllers\Admin" Namespace

   Route::get('/admin','ShowAdminDashboard@index');
});

以下代码正在运行尝试一次

在像app/http/controller这样的文件夹admin中创建了一个文件showdoard.php

现在,, ShowDashboard.php

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

use App\Http\Controllers\Controller;

class ShowDashboard extends Controller {
   public function init()
    {
        return 'Hi there!';
    }

}

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

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

这将在控制器下的管理目录中生成一个名为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
{
    //
}
您的控制器现在将如下所示:

/app
    /Http
        /Controllers
            /Admin
                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!';
    }

}
<?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!';
    }
}
保存您的工作,并启动您的页面。浏览www.example.dev/admin时,您应该会看到这样一条消息:您好


我希望这有帮助

所有的事情都已经解释过了,但是我们可以再做一次尝试 将
controller
后缀添加到
showDashboard
并运行
composer dump autoload

我想你的控制器会运行


重命名控制器ShowDashboardController

在子文件夹中创建新控制器,例如:
app/Http/Controllers/User/UserController.php

在此控制器中,
名称空间的末尾
必须包含文件夹名称

如下:
namespace-App\Http\Controllers\User

重要的是命名空间下必须写入
使用App\Http\Controllers\Controller

最后在routes.php
Route::get('/user',user\UserController@login' );

UserController.php内容:

<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
class UserController extends Controller {
    public function login() {
        return 'this login';
    }
}
Route::get ( '/user/login', 'User\UserController@login' );

// or use this
Route::group ( [
        'namespace' => 'User'
], function () {
    Route::get ( '/user/login', 'UserController@login' );
} );

文件名应为
ShowDashboardController.php

文件夹结构中缺少“App”文件夹-这是错误的吗?如果它真的在结构中丢失了,那可能是我没有提到的RationalApp,让我更正它。我复制了你的代码,它工作了,不知道你得到错误的原因是什么。我使用php artisan服务器作为我的服务器,这会是个问题吗?我不这么认为。我可以在你的文件夹结构中看到“App”,但名称应该是小写的“App”-我想这只是一个打字错误。还请检查composer.json中的自动加载部分-您应该在'App\\'名称空间和'App/'之间有一个映射,folderI没有对composer.jsonI进行任何更改,但完全相同,但不起作用。投票选出创建路线的最佳方法。:)