如何使用Artisan命令在Laravel 5.2中创建一个RESTful资源控制器(PHP)

37

我正在使用 Laravel 5,想知道如何使用 Artisan 命令(PHP)生成一个带有所有预定义方法的 RESTful 资源控制器。

当我运行 php artisan make:controller LessonsController 时,它会创建一个控制器,没有任何方法,如下所示:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;

class LessonsController extends Controller
{


}
我想创建的是一个完整的Laravel RESTful资源控制器,其中包括所有预定义的方法,如: index(),create(),store(),show(),edit(),update()destroy()。如何实现?

Laravel 5 的哪个版本? - lagbox
Laravel框架版本5.2.7 - Vicky
8个回答

75

尝试在命令上寻求帮助

php artisan help make:controller
如果在帮助选项中看到 --resource 标志,则可能是在使用版本5.2或更高版本,可以将该标志添加到命令中以获取资源控制器。
php artisan make:controller --resource SomeResourceController

对于Laravel 5.0和5.1版本,make:controller命令默认创建资源控制器,而--plain选项则会创建一个普通控制器。

Laravel 5.2 - Restful Resource Controllers - 默认为普通控制器

Laravel 5.1 - Restful Resource Controllers - 默认为资源控制器

Laravel 5.0 - Restful Resource Controllers - 默认为资源控制器

总结: 自Laravel 5.2版本开始,make:controller命令将默认创建普通控制器。


3
这个命令可以创建一个资源控制器,命令为 php artisan make:controller --resource SomeResourceController。谢谢! - Vicky
1
@Vicky 是的,因为您正在使用 5.2 版本。 - lagbox
不要忘记在路由文件routes/web.php中调用控制器,使用 use App\Http\Controllers\SomeResourceController;,否则会出现 类未找到错误 - Fernando Kosh

13

对于Laravel 5.2

php artisan make:controller NameofController --resource
// It will create the controller with all methods.

如果 Laravel < 5.2

php artisan make:controller NameofController
// It will create the controller with all methods.

并且

php artisan make:controller NameofController --plain
// It will create the controller without any method.

3

对于默认控制器,该控制器包含您需要的所有方法,
php artisan make:controller LessonsController

如果您想要一个空的控制器,没有任何方法,
php artisan make:controller --plain LessonsController


老兄,这个在Laravel 5上不起作用。如果你运行 php artisan make:controller Xyz 它会给你一个普通的控制器。 - Vicky
它在Laravel 5中不起作用。我猜你正在使用Laravel 4。 - Vicky

2

php artisan make:controller "NameOfController" - 将会创建一个包含所有方法的控制器

php artisan make:controller "NameOfController" --plain This will create controller with no methods.

最好的问候,我正在使用laravel 5.0


Vicky,是你在使用不同版本的 Laravel 5,这应该在你的问题中注明。 - lagbox
我知道在版本4中它可以正常工作。但是在版本5.2.7中却不行。 - Vicky

2
php artisan make:controller ControllerName --resource

1

所以你正在使用Laravel 5.2,为了拥有带有RESTful方法的控制器,请输入以下命令

php artisan make:controller --resource NAME_OF_CONTROLLER

在 Laravel 5.1 及以下版本中,默认情况下,make:controller 命令用于生成 Controller,其中包括所有必需的方法,如 'index, create, store, show, edit, update, destroy'。对于 5.1 及以下版本,要获得不带任何方法的空控制器文件,我们过去使用 '--plain' 参数。
php artisan make:controller --plain NAME_OF_CONTROLLER

但是在 Laravel 5.2 中,默认情况下, artisan 命令将创建一个裸控制器文件,没有任何 RESTful 方法。
由于 Laravel 5.2 有很多变化,最好使用以下 'artisan help' 命令。
php artisan help make:controller

通过这个,我们将实现--resource的引入。

请参考Laravel文档Laravel HTTP Controllers - Artisan Command

建议:由于这是从5.2版本开始的更改,修改文章标题也是很好的选择。


0

php artisan make:controller ItemController --resource

php艺术家制造:控制器ItemController --资源


0
php artisan make:controller  not_yet_existed_folder\MyController -r

1
如果您能解释一下您的答案会更有帮助。 - Rohit Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接