具有命名空间的laravel路由资源

时间:2014-11-17 08:51:52

标签: php laravel laravel-4 routing

我正在尝试在Laravel中为我的控制器创建一个资源路径,该控制器位于app \ controllers \ FormController中。我怎样才能做到这一点?我尝试了以下方式,但没有一个工作。

Router::resource('form', 'app\controllers\FormController');
Router::resource('form', 'app\\controllers\\FormController');
Router::resource('form', 'app/controllers/FormController');



namespace app\controllers;

class FormController extends BaseController {

    public function index()
    {


        return View::make('hello');
    }

}

如果删除命名空间,它就可以工作。

结果:

ReflectionException (-1) 
Class app\controllers\FormController does not exist

2 个答案:

答案 0 :(得分:6)

默认情况下会加载

app/controllers。但如果您使用不同的命名空间,则可以使用它。

e.g。名称空间为Site;

Route::resource('form', '\Site\FormController');

还有另一种方式。

假设同一命名空间中有不同的控制器。例如FormController,'BlogController`。你可以分组它。

Route::group(['namespace' => 'Site'], function()
{
    Route::resource('form', 'FormController');
    Route::resource('blog', 'BlogController');
});

更新#1:

Route::resource('form', 'FormController');

您不需要使用任何名称空间。

答案 1 :(得分:5)

您可以执行以下操作:

Router::resource('form', 'FormController');

Laravel自动加载app/controllers/中的所有类。

<强>更新 您需要将索引函数更改为getIndex()。如果使用资源路由,则每个函数都必须以请求方法开始。