当前位置: 首页 > 知识库问答 >
问题:

Laravel4和5中的RESTful和资源控制器

淳于慎之
2023-03-14

Laravel 4中的RESTful和资源控制器受到限制,即RESTful方法名称必须以get、put、post、patch、delete结尾,而资源控制器必须以index、create、store、show edit、update和destroy结尾。我的问题是,Laravel 5是否也施加了同样的限制?

共有1个答案

刘才俊
2023-03-14

从本质上说,是的。读这里。但是如果你想要不同的东西,我给你一个窍门。首先,您可以创建自己的资源注册器。我的网站[位于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: indexaction修改为Photo: rootaction,将您的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资源控制器,其中包含所有预定义的方法,如:和。 我怎样才能做到这一点?