kamyshev/responder-bundle

此包已被废弃且不再维护。未建议任何替代包。

一个用于简化控制器返回任何类型数据并转换为响应的 Symfony Bundle

安装次数: 3,284

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

类型:symfony-bundle

v1.0.1 2018-11-16 07:04 UTC

This package is auto-updated.

Last update: 2020-01-16 10:00:41 UTC


README

Build Status Scrutinizer Code Quality

ResponderBundle

一个用于简化控制器返回任何类型数据并转换为响应的 Symfony Bundle

设置

要将此包添加到您的 composer.json 并安装,请执行以下命令

composer require kamyshev/responder-bundle

将 ResponderBundle 添加到您的应用程序

// config/bundles.php
return [
    // ...
    Kamyshev\ResponderBundle\ResponderBundle::class => ['all' => true],
    // ...
];

使用方法

添加新的响应器需要创建一个实现了 ResponderInterface 的类并为它定义一个服务。该接口定义了两个方法

  • supports() — 此方法用于检查响应器是否支持给定的参数。只有当此方法返回 true 时,才会执行 make()。
  • make() — 此方法将为参数创建实际的响应。

这两个方法都接收 Result 对象和 ResultMetadata 实例。该对象包含从当前参数的方法签名中检索到的所有信息。

现在您知道该怎么做,可以实现此接口。从控制器动作返回 User

// src/Responder/UserResponder.php
namespace App\Responder;

use App\Entity\User;
use Symfony\Component\HttpFoundation\Response;
use Kamyshev\ResponderBundle\Responder\ResponderInterface;
use Kamyshev\ResponderBundle\Responder\ResultMetadata;

class UserResponder implements ResponderInterface
{
    public function supports($user, ResultMetadata $meta): bool
    {
        return User::class === $meta->getType();
    }
    
    public function make($user, ResultMetadata $meta): Response
    {
        return new Response($user->getName());
    }
}

这就完成了!现在您只需添加服务容器的配置。这可以通过为服务添加 kamyshev.responder 标签来完成。

# config/services.yaml
services:
    _defaults:
        # ... be sure autowiring is enabled
        autowire: true
    # ...

    App\Responder\UserResponder:
        tags: ['kamyshev.responder']

一切完成!您现在可以从控制器中返回 User 并在响应器中处理它。