Laravel 4将控制器放在子文件夹中 - 没有找到类

时间:2014-09-11 02:23:47

标签: class laravel-4 controller subdirectory

我在子文件夹中有一个控制器,它完美无缺:

路线:

Route::resource('json/stock/equipmentImages', 'Stock_EquipmentImageController');

从controller / stock / EquipmentImageController.php获取它的类 它有一个类定义:

class Stock_EquipmentImageController extends \BaseController {

如果我这样做,最奇怪的事情发生在:

Route::resource('json/stock/equipmentLocations', 'Stock_EquipmentLocationController')

然后我收到消息,找不到课程。

如果我将类从controller / stock / EquipmentLocationController.php移动到 controller / EquipmentLocationController.php并调整路径:

Route::resource('json/stock/equipmentLocations', 'EquipmentLocationController');

一切正常。这发生在没有命令行访问的共享服务器上。在我的localhost上,所有控制器都可以放入子文件夹中。

1 个答案:

答案 0 :(得分:0)

我没有使用命名空间,它在我的本地主机上工作正常,但在我的公共服务器上出现了问题。命名空间DID解决了egig建议的问题。感谢。

以下是我的所作所为,以防其他人遇到类似问题:

我浏览了这个很好的教程:https://www.youtube.com/watch?v=yAzd7Ig1Wgg 熟悉命名空间,因为这对我来说对Laravel 4来说是相对较新的。

路由器设置(资源路由器):

Route::resource('json/stock/equipment', 'App\Controllers\Stock\EquipmentController');

将psr 0设置添加到autoload :(而不是使用classmap),就像视频所示。

,
    "psr-0": {
        "Stock": "app/controllers/"
    } ....

没有向basecontroller添加任何内容(没有命名空间描述):

    class BaseController extends Controller {

    public function __construct(){ ....

在子文件夹(controllers \ stock)中为我的控制器添加了命名空间和依赖项:

namespace App\Controllers\Stock;
use BaseController, Form, Input, Redirect, View, Equipment, Response;

class EquipmentController extends BaseController { ....

然后将我的模型放在子文件夹(models \ stock)中,没有命名空间的描述。

class Equipment extends \Eloquent {


protected $fillable = [

                'description',
                'location',
 ....

然后我做了'php artisan dump-autoload'并将所有内容上传到我的公共服务器,相应地更改了数据库和公用文件夹设置,因为它们不同。一切正常!

欢迎提供反馈,感谢您的支持!