Sty*_*hon 3 php namespaces autoload laravel laravel-5
在我的 Laravel 应用程序中,我将前端和后端代码拆分到文件夹中。这些是app/Http/Controllers/BackEnd和app/Http/Controllers/FrontEnd。我认为定义两个命名空间BackEnd和FrontEnd. 我已将我的作曲家文件编辑为:
"autoload": {
"classmap": [
"app/Models",
"database"
],
"psr-4": {
"App\\": "app/",
"BackEnd\\": "app/Http/Controllers/BackEnd",
"FrontEnd\\": "app/Http/Controllers/FrontEnd"
}
},
Run Code Online (Sandbox Code Playgroud)
然后我运行 composer autodump 并像这样设置我的路由文件:
Route::group(['prefix' => 'webman', 'middleware' => 'auth', 'namespace' => 'BackEnd'], function()
{
Route::get('/', ['as' => 'webmanHome', 'uses' => 'HomeController@index']);
});
Run Code Online (Sandbox Code Playgroud)
但是当我浏览到时,localhost:8000/webman/我只是收到一个错误,Class App\Http\Controllers\BackEnd\HomeController does not exist. 控制器确实存在,这是文件:
<?php namespace BackEnd;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class HomeController extends Controller {
/**
* Display the admin home page, showing the front-end menu and "apps" as links to other sections of the ACP.
*
* @param Reqeust $request
*
* @return View
*/
public function index(Request $request)
{
return view('backend.index');
}
}
Run Code Online (Sandbox Code Playgroud)
我已经检查vendor/composer/autoload_psr4.php以确保正在定义命名空间,并且它在返回的数组中'BackEnd\\' => array($baseDir . '/app/Http/Controllers/BackEnd'),。
奇怪的是,如果我<?php namespace App\Http\Controllers\BackEnd;在顶部使用,HomeController.php那么一切正常,为什么?我错过了什么?为什么不能自动加载找到文件BackEnd?
设置namespace时Route::group()实际上是将其附加到App\Http\Controllers. 您可以做的是删除它并像这样引用完整路径:
Route::group(['prefix' => 'webman', 'middleware' => 'auth'], function()
{
Route::get('/', ['as' => 'webmanHome', 'uses' => '\BackEnd\HomeController@index']);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3165 次 |
| 最近记录: |