Laravel - 如何为子文件夹控制器分配相对路径?

时间:2013-12-16 21:49:47

标签: rest laravel-4

我正在使用laravel 4.0作为我的Web服务项目。我尝试将相对路径分配给控制器子文件夹,但仍然收到错误消息。

这是我的路由器看起来像

Route::group(array('prefix' => 'merchant'), function()
{
    Route::resource('index', 'ProductController@showIndex');
    Route::resource('product', 'CategoryController@showIndex');
    Route::resource('general', 'GeneralController@showIndex');
});

当前路径

  

/app/controllers/ProductController.php

我想要像这样

  

/app/controllers/merchant/ProductController.php

提前多多感谢。

1 个答案:

答案 0 :(得分:4)

您需要namespace才能实现这一目标。

在您的控制器文件夹中创建一个名为merchant的目录,并将ProductController.php放在Merchant目录中。

然后打开ProductController.php并在文件顶部使用以下命名空间。

<?php namespace Merchant;

class ProductController extends /BaseController 
{

之后编辑您的路线文件:

 Route::get('index', 'Merchant\ProductController@showIndex');

删除Route::group(array('prefix' => 'merchant'), function()。当您有多个路由的公共URL时使用的前缀。

例如:

http:://laravel.com/xyz/products
http:://laravel.com/xyz/category
http:://laravel.com/xyz/posts

此处xyz在每个网址中都很常见。因此,在这种情况下,您可以使用前缀为xyz

的组路由

我还可以看到,您已经使用了资源控制器。

    Route::resource('index', 'ProductController@showIndex');
    Route::resource('product', 'CategoryController@showIndex');
    Route::resource('general', 'GeneralController@showIndex');

您知道吗?默认情况下,对于资源控制器,Laravel将生成7条路由。因此,在使用资源控制器时,您不需要创建@showIndex函数。

Route::resource('index', 'ProductController');
Route::resource('product', 'CategoryController');
Route::resource('general', 'GeneralController');

有关资源控制器的更多信息:

http://laravel.com/docs/controllers#resource-controllers