我正在使用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
提前多多感谢。
答案 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');
有关资源控制器的更多信息: