我正在 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/