我正在更新我的项目从laravel 4.2到laravel 5.0。但是,在我面对这个错误并在过去的4个小时里一直试图解决它之后。
我在4.2版本上没有遇到任何这样的错误。我试过作曲家dump-autoload
,但没有效果。
如更新指南中所述,我已将所有控制器按原样移动,并将app/Providers/RouteServiceProvider.php
中的namespace
属性改为null
。所以,我想所有的控制器都在全局命名空间中,所以不需要在任何地方添加路径。
这是我的composer.json:
"autoload": {
"classmap": [
"app/console/commands",
"app/Http/Controllers",
"app/models",
"database/migrations",
"database/seeds",
"tests/TestCase.php"
],
Pages控制器:
<?php
class PagesController extends BaseController {
protected $layout = 'layouts.loggedout';
public function getIndex() {
$categories = Category::all();
$messages = Message::groupBy('receiver_id')
->select(['receiver_id', DB::raw("COUNT('receiver_id') AS total")])
->orderBy('total', 'DESC'.....
这里是BaseController
<?php
class BaseController extends Controller {
//Setup the layout used by the controller.
protected function setupLayout(){
if(!is_null($this->layout)) {
$this->layout = View::make($this->layout);
}
}
}
在routes.php中,我像这样调用控制器:
Route::get('/', array('as' => 'pages.index', 'uses' => 'PagesController@getIndex'));
谁来帮帮我。
路由加载在app/Providers/RouteServiceProvider.php文件中。如果你看这里,你会看到这段代码:
$router->group(['namespace' => $this->namespace], function($router)
{
require app_path('Http/routes.php');
});
为任何路由添加一个命名空间,默认为AppHttpControllers
,因此会出现错误消息。
你有两个选择:
- 在控制器的顶部添加合适的命名空间。
- 在组的外部加载路由,所以命名空间不会自动添加。
我会选择选项1,因为从长远来看,这将为你省去麻烦。