【问题标题】:Laravel 5 make:controller creating controller in app folder instead of controller folderLaravel 5 make:控制器在应用程序文件夹而不是控制器文件夹中创建控制器
【发布时间】:2014-11-24 21:35:48
【问题描述】:

我正在学习如何使用 Laravel 5,但遇到了一个问题,我的控制器是在“app”文件夹而不是“controller”文件夹的根目录中创建的。我不知道为什么会这样,因为我已经重新安装并检查了 10 次。

我在 Windows 8.1 上使用 gitbash..

那我走了

john@John ~/desktop/code/my-first-app
$ php artisan make:controller PagesController

然后我得到

控制器创建成功

仅在 app 的根目录中创建它,而在 Controllers 文件夹中没有任何内容。我错过了什么?在laracasts 的视频下,我还看到其他人在 cmets 中遇到了同样的问题。

【问题讨论】:

  • 我已经编辑了我的答案。请看一下

标签: laravel makefile git-bash laravel-5


【解决方案1】:

控制器可以创建到特定路径如下:

php artisan make:controller controllerName

但是,如果您想在自定义目录中创建它,请参考以下行:

下面将在根路径(应用目录外)上创建

php artisan make:controller App\\../pathName/controllerName

如果想要在应用目录中,那么它应该是

php artisan make:controller App\\pathName/controllerName

在 Laravel 6.x 上测试

【讨论】:

  • 用 laravel 7 确认 - 但是命名空间和类名被破坏了,因为路径并不总是像命名空间一样......
【解决方案2】:

在尝试php artisan make:controller Directory\PageController 之后,Laravel 5.1 会在我的应用目录中创建一个名为 DirectoryPage Controller 的控制器。我的解决方案是用另一个反斜杠转义反斜杠,所以以下对我有用:

php artisan make:controller Directory\\\\PageController

Laravel 在app/Directory 中创建了一个页面控制器。只是想和大家分享一下。

【讨论】:

    【解决方案3】:

    php artisan make:controller -r controllerName

    尝试使用 -r 选项,它将创建带有样板的控制器(所有基本功能,例如:- public function index(){},public function store(Request $request){},等等...... .. 为了更好地理解,您还可以访问:-https://laracasts.com/series/laravel-from-scratch-2017

    【讨论】:

      【解决方案4】:

      在 Laravel 5 中,不需要指定路径。默认会在目录中生成控制器。

      所以,控制器可以这样创建:

      php artisan make:controller controllerName
      

      但是,如果您想在自定义目录中创建它,请参考以下行:

      php artisan make:controller pathName/controllerName
      

      【讨论】:

      • 刚刚尝试了 Vijay 的建议,它创建了 pathNamecontrollerName。但是我用 php artisan make:controller pathName\\controllerName. 取得了成功
      • 你也可以把斜线反转成php artisan make:controller pathName/controllerName
      • 是的,投反对票,因为“自定义目录”建议显然是错误的 - 并且已经错了 2 年多。要在自定义目录中创建控制器,您需要php artisan make:controller DirectoryName/ControllerName
      • @Vijay 如果我有一些 laravel 应用程序怎么办……如何在特定应用程序中创建控制器?
      【解决方案5】:

      创建控制器时似乎存在错误。

      我在一分钟前使用安装了大约一两周的 Laravel 5 进行了检查,它运行良好。但是当我安装新的 Laravel 5 时,现在控制器是在 app/ 文件夹中创建的,而不是在 app/Http/Controllers 中。

      但也有可能开发人员改变了控制器存储位置的想法(Laravel 5 仍在开发中)。

      目前没人知道,你也可以看看Laracast discussion这个问题。

      奇怪的是你不能手动添加这个命令的路径。

      在 Laravel 4 中你可以这样做:

      php artisan controller:make --path="app/Controllers" PagesController
      

      但在 Laravel5 中 controller:make 与 Laravel 4 相比,您的选择更少,它们是:

      Options:
       --plain               Generate an empty controller class.
       --help (-h)           Display this help message.
       --quiet (-q)          Do not output any message.
       --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
       --version (-V)        Display this application version.
       --ansi                Force ANSI output.
       --no-ansi             Disable ANSI output.
       --no-interaction (-n) Do not ask any interactive question.
       --env                 The environment the command should run under.
      

      所以你不能把自定义路径放在这里,也不能像在 Laravel 4 中那样生成一些方法。

      编辑

      在最新的 Laravel 5 提交中,它似乎又可以正常工作了。因此,您应该创建新的 Laravel 5 项目或运行:

      composer update
      

      更新项目。

      但是您可能会遇到一些错误,例如:

      {"error":{"type":"Symfony\Component\Debug\Exception\FatalErrorException","message":"Class 'Illuminate\Routing\FilterServiceProvider' 未找到","file":

      删除这些错误:

      在文件app/Providers/FilterServiceProvider.php更改

      use Illuminate\Routing\FilterServiceProvider as ServiceProvider;
      

      进入:

      use Illuminate\Foundation\Support\Providers\FilterServiceProvider as ServiceProvider;
      

      并在文件app/Providers/RouteServiceProvider.php更改文件中

      use Illuminate\Routing\RouteServiceProvider as ServiceProvider;
      

      进入:

      use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
      

      【讨论】:

        【解决方案6】:

        进行作曲家更新,它会恢复正常。

        【讨论】:

        • 当我尝试制作控制器或运行一般的 php artisan 时,我现在在第 5 行的 FilterServiceProvider.php 中出现错误。
        猜你喜欢
        • 2018-09-08
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        • 2013-09-21
        相关资源
        最近更新 更多