Laravel 4中的RESTful和资源控制器受到限制,即RESTful方法名称必须以get、put、post、patch、delete结尾,而资源控制器必须以index、create、store、show edit、update和destroy结尾。我的问题是,Laravel 5是否也施加了同样的限制?
从本质上说,是的。读这里。但是如果你想要不同的东西,我给你一个窍门。首先,您可以创建自己的资源注册器
。我的网站[位于app/Routing/resourceRegistrator.php
]:
namespace App\Routing;
use Illuminate\Routing\ResourceRegistrar as BaseRegistrar;
class ResourceRegistrar extends BaseRegistrar
{
}
然后在您的服务提供商中注册您自己的RouterRegistrar
:
$this->app->bind('Illuminate\Routing\ResourceRegistrar', 'App\Routing\ResourceRegistrar');
注意:我通过register
方法在App\Providers\AppServiceProvider
中注册我自己的routerregister
。
我在路由中添加自己的资源控制器。php
类似这样的内容:
Route::resource('photo', 'PhotoController');
所以,我应该有一个光控制器来处理这个请求。
我们知道,一个对'/Photo'的
GET
请求将由PhotoController@index
方法处理,将您的Photo: index
action修改为Photo: root
action,将您的Resource寄存器
修改为像这样的东西:
namespace App\Routing;
use Illuminate\Routing\ResourceRegistrar as BaseRegistrar;
class ResourceRegistrar extends BaseRegistrar
{
protected function addResourceIndex($name, $base, $controller, $options)
{
$uri = $this->getResourceUri($name);
$action = $this->getResourceAction($name, $controller, 'root', $options);
return $this->router->get($uri, $action);
}
}
所以现在,
GET
对“/photo”的请求将由PhotoController@root
方法。
Verb | Path | Method to modify |
----------|-----------------------|----------------- |
GET | `/photo` | addResourceIndex |
GET | `/photo/create` | addResourceCreate |
POST | `/photo` | addResourceStore |
GET | `/photo/{photo}` | addResourceShow |
GET | `/photo/{photo}/edit` | addResourceEdit |
PUT/PATCH | `/photo/{photo}` | addResourceUpdate |
DELETE | `/photo/{photo}` | addResourceDestroy|
请参阅
Resource寄存器
的基本代码。
我正在开发我的第一个RESTful api,这(不幸的是)是在一个已经存在的系统上完成的,想法是允许第三方访问这个系统。 一切都很好,直到我意识到我有多种方法来访问相同的资源。我将尝试使用系统的一部分来解释它。该系统是使用Laravel 5.8构建的,其中包括以下数据库表: 用户 电子邮件 短信 每个用户可以有许多电子邮件,并且每个电子邮件只属于一个用户。这同样适用于短信。 我“忽略”了当前的所有
资源控制器 资源控制器可以让你轻松的创建RESTFul资源控制器,可以通过命令行生成需要的资源控制器,例如: // 生成index模块的Blog资源控制器 php think make:controller index/Blog 或者使用完整的命名空间生成 php think make:controller app\index\controller\Blog 然后你只需要为资源控制器注册一个资源路
等等。现在,我已经看到了一些公开路径的web服务API,如或。路径的批准部分似乎更像是问题可能具有的属性(在本例中),我想知道这是否可以,以及使它成为请求参数和路径的一部分之间的界限在哪里? 在web服务中公开以某种方式公开系统中的一个预期资源的路径(如本例中的)是否可以,但除了正常的路径之外,还可以通过类似于的路径公开这些路径?规则是什么,这应该是怎样的? 如果我没有人要问,我会创建一个类似:g
这是一个常用的资源控制器模板,使用时可以复制直接使用,复制后把相应命名空间,类名改掉就可以用了; <?php // +---------------------------------------------------------------------- // | ThinkCMF [ WE CAN DO IT MORE SIMPLE ] // +-----------------------
我正在使用Laravel5,我想知道如何使用Artisan命令(PHP)使用所有预定义方法生成RESTful资源控制器。 当我运行时,它会创建一个控制器,没有如下所示的方法: 我想要创建的是一个完整的Laravel RESTful资源控制器,其中包含所有预定义的方法,如:和。 我怎样才能做到这一点?