我试图在 Laravel 4 中订购我的 Controller 并为它们添加一些不错的命名空间
所以我想要这样的路线 管理员/学者组 我希望 Controller 位于名为“admin”的子文件夹中
所以我有一个这样的路由文件:
//Admin Routes
Route::group(array('namespace' => 'admin'), function()
{
Route::group(array('prefix' => 'admin'), function()
{
# Scholar Groups Controller
Route::group(['before' => 'auth|adminGroup'], function()
{
Route::resource('scholar-groups', 'ScholarGroupController');
});
});
});
然后我在名为“admin”的子文件夹中的 scholarGroupController 中添加了一个命名空间
<?php namespace admin;
class ScholarGroupController extends \BaseController {
/**
* Display a listing of the resource.
* GET /scholargroup
*
* @return Response
*/
public function index()
{
$scholarGroups = ScholarGroup::paginate(10);
return View::make('scholar_groups.index',compact('scholarGroups'));
}
但每当我尝试访问 Controller 中的索引操作时,我都会收到此错误。
Class 'admin\ScholarGroup' not found
因此命名空间正在影响下一行中的模型命名空间
$scholarGroups = ScholarGroup::paginate(10);
如何避免命名空间影响此模型类命名空间?
最佳答案
您的 Controller 位于 admin
命名空间中,从那里引用其他类将相对于该命名空间。
因此您需要使用前面的反斜杠来引用您的模型(就像您对 BaseController
所做的那样),如下所示:
<?php namespace admin;
class ScholarGroupController extends \BaseController
{
public function index()
{
$scholarGroups = \ScholarGroup::paginate(10);
return View::make('scholar_groups.index',compact('scholarGroups'));
}
}
或者像这样在类声明之上导入它:
<?php namespace admin;
use ScholarGroup;
class ScholarGroupController extends \BaseController
{
public function index()
{
$scholarGroups = ScholarGroup::paginate(10);
return View::make('scholar_groups.index',compact('scholarGroups'));
}
}
此外,您不需要执行两次 Route::group
。你可以这样做:
Route::group(array('prefix' => 'admin', 'namespace' => 'admin'), function() {
// . . .
});
关于php - Laravel 4 命名空间 Controller 中的路由和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884294/