我正在使用laravel 4.2。
让我们说有这样的课程:
class BShopsController extends ShopsController
要解决这个问题,我尝试使用名称空间让我们这样说:
namespace app\controllers;
然后它找不到ShopsController
所以我添加
use \ShopsController;
然后我收到错误:
类BShopsController不存在
我应该首先使用什么命名空间,这样才不会破坏任何东西?
修改
BShopsController和ShopsController位于文件夹商店
答案 0 :(得分:3)
由于您的文件位于Shops文件夹中,并且我认为Shops文件夹位于app文件夹中,您应该按照以下方式命名您的课程。
<?php namespace Shops;
class BShopsController extends ShopsController{}
同样,
<?php namespace Shops;
class ShopsController{}
答案 1 :(得分:2)
所以在Shhetri和Using namespaces in Laravel 4
的帮助下我是这样做的:
namespace App\Controllers\Shops;
class BShopsController extends ShopsController{}
同样在routes.php中,然后需要更改为:
Route::controller('shops', 'App\Controllers\Shops\ShopsController');
在调用action()方法的地方 - 也需要使用命名空间。
还需要运行
composer dump-autoload -o
否则是错误。
同样在ShopsContrller中需要这样:
use \App\Controllers\BaseController;
因为Shops控制器位于另一个名称空间而不是BaseController,所以无法找到它。但是从BaseController扩展,所以需要它。