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.phpRoute::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进行任何更改,但完全相同,但不起作用。投票选出创建路线的最佳方法。:)