15

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

我在 Windows 8.1 上的 gitbash 中。

所以我去

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

然后我得到

控制器创建成功

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

4

6 回答 6

58

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

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

php artisan make:controller controllerName

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

php artisan make:controller pathName/controllerName
于 2015-04-08T05:54:38.450 回答
7

可以将控制器创建到特定路径中,如下所示:

php artisan make:controller controllerName

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

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

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

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

php artisan make:controller App\\pathName/controllerName

在 Laravel 6.x 上测试

于 2020-01-10T03:04:23.807 回答
2

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

php artisan make:controller Directory\\\\PageController

Laravel 在app/Directory. 只是想我会与大家分享。

于 2015-08-21T00:27:50.333 回答
1

php工匠制作:控制器-r控制器名称

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

于 2018-04-01T08:14:09.337 回答
0

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

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

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

目前没人知道,你也可以看看Laracast关于这个问题的讨论。

奇怪的是,您不能手动添加此命令的路径。

在 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":"找不到类 '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;
于 2014-09-30T11:59:41.507 回答
0

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

于 2014-10-01T04:23:15.597 回答