在我的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"
}
},
然后我运行了composer autodump并设置了我的路由文件:
Route::group(['prefix' => 'webman', 'middleware' => 'auth', 'namespace' => 'BackEnd'], function()
{
Route::get('/', ['as' => 'webmanHome', 'uses' => 'HomeController@index']);
});
但是,当我浏览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');
}
}
我已经检查vendor/composer/autoload_psr4.php
以确保正在定义名称空间,并且它位于返回的数组'BackEnd\\' => array($baseDir . '/app/Http/Controllers/BackEnd'),
中。
奇怪的是,如果我在<?php namespace App\Http\Controllers\BackEnd;
的顶部使用HomeController.php
,那么一切正常,为什么?我错过了什么?为什么自动加载无法仅使用BackEnd
找到文件?
答案 0 :(得分:3)
在namespace
中设置Route::group()
时,实际上会将其附加到App\Http\Controllers
。您可以做的是删除它并引用完整路径,如下所示:
Route::group(['prefix' => 'webman', 'middleware' => 'auth'], function()
{
Route::get('/', ['as' => 'webmanHome', 'uses' => '\BackEnd\HomeController@index']);
});
答案 1 :(得分:0)
尝试更改/评论RouteServiceProvider.php中的以下行
<select ng-model="book.titleId" ng-options="title.id as title.text for title in titles">
<option value="" disabled selected style="display: none;">Select book</option>
</select>
答案 2 :(得分:0)
这是一个有趣且简单的方法来解决这个问题......服务提供商。
当通过提供商加载路线文件时,&#39; App \ Http ...&#39;没有强制执行。
public function boot()
{
$this->loadRoutesFrom(app_path('Your/Model/routes.php'));
}
请记住,也没有附加中间件。您的路线组必须指定一个&#39;网络&#39;中间件或者你会疯狂地想知道为什么验证等等不再适用了......(去过那里!)
无论如何,这是一种很酷的方式,使用提供商可以获得更多的模块化代码并重复使用。