【问题标题】:Laravel 4 Namespaces routes and namespaces in controllersLaravel 4 命名空间路由和控制器中的命名空间
【发布时间】:2015-07-05 05:31:47
【问题描述】:

我试图在 Laravel 4 中订购我的控制器并为它们添加一些不错的命名空间

所以我想要这样的路线 管理员/学者组 我希望控制器位于一个名为“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');
    });

  });
});

然后我在我的 AcademicGroupController 中添加了一个命名空间,该命名空间位于名为“admin”的子文件夹中

    <?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);

如何避免影响这个模型类命名空间的命名空间?

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:

    您的控制器位于 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() {
        // . . .
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2017-12-13
      相关资源
      最近更新 更多