Laravel 5命名空间问题

时间:2017-11-23 09:35:04

标签: php laravel namespaces

我有一个应用程序,我已将所有控制器/模型/ repo /服务逻辑移到本机Laravel应用程序文件夹之外。我在根目录中有Acme个文件夹,我已将其添加到作曲家:

    "psr-4": {
        "App\\": "app/",
        "Acme\\": "acme/"
    }

AccountController的命名空间如下:

<?php namespace Acme\Account\Controller;

我遇到的问题是:

urlContainer['userAjax'] = "{!! RoutingService::actionAjax('Account\Controller\AccountController@getUserAjax') !!}";

我收到错误消息:

Action \Acme\Account\Controller\AccountController@getUserAjax not defined

控制器存在,方法存在且路由存在。我似乎无法看到导致问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

我认为问题是文件的位置。

您的配置说文件夹acme /中的每个类都在Acme\命名空间中。您的控制器的全名是Acme\Account\Controller\AccountController。根据PSR-4,位置应为:

acme/Account/Controller/AccountController.php

如果不是这种情况,您可以按如下方式更改自动装带器设置:

"Acme\\Account\\": "acme/"

或移动您的文件。

编辑:另一种可能性是控制器中的namespace包含拼写错误。