承接 solidworx/simple-response-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

solidworx/simple-response-bundle

Composer 安装命令:

composer require solidworx/simple-response-bundle

包简介

A Symfony bundle to return simple reponses in your controllers

README 文档

README

SimpleResponseBundle is a bundle for the Symfony framework which allows you to return customised response classes in your controllers/actions which reduces the amount of dependencies you controller or action needs.

Installation

To install the bundle using composer, run the following command:

$ composer require solidworx/simple-response-handler

After you have installed the bundle, then you need to register the bundle in your application

<?php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            ...
            new SolidWorx\SimpleResponseBundle\SimpleResponseBundle(),
            ...
        ];
        
        ...        
     }
}

Usage

This bundle comes with some pre-defined handlers:

  • TemplateResponse
  • RouteRedirectResponse

TemplateResponse

The TemplateResponse class will render a template based on the arguments to the class. To render a template, just return an instance of the TemplateResponse class in your route action:

<?php

// src/AppBundle/Action/MyAction.php

use SolidWorx\SimpleResponseBundle\Response\TemplateResponse;

class MyAction
{
    public function __invoke()
    {
        return new TemplateResponse('index.html.twig');
    }
}

When loading this action, the index.html.twig template will automatically be rendered without the need to include twig as a dependency in your action class.

RouteRedirectResponse

The RouteRedirectResponse class will redirect to a given route name.

<?php

// src/AppBundle/Action/MyAction.php

use SolidWorx\SimpleResponseBundle\Response\RouteRedirectResponse;

class MyAction
{
    public function __invoke()
    {
        return new RouteRedirectResponse('_some_route_name');
    }
}

When loading this action, the page will redirect to the _some_route_name route without the need to include the router in your action or generate the URL.

Registering custom handlers

To register a custom handler, you need to create a new service that has the response_handler.handler tag. This class needs to implement the SolidWorx\SimpleResponseBundle\ResponseHandlerInterface interface

services:
    My\Custom\Handler:
        arguments: ['@doctrine.orm.entity_manager']
        tags: ['solidworx.response_handler']
            

You then need to create a class that will be used as the return value in your action

<?php
use Symfony\Component\HttpFoundation\JsonResponse;

class DoctrineEntityResponse extends JsonResponse
{
    private $entity;
    
    public function __construct(string $entity)
    {
        $this->entity = $entity;
        parent::__construct();
    }

    public function getEntity(): string
    {
        return $this->entity;
    }
}      

Your handler class will add the logic to return a response object;

<?php
use SolidWorx\SimpleResponseBundle\ResponseHandlerInterface;
use Symfony\Component\HttpFoundation\Response;

class Handler implements ResponseHandlerInterface
{
    private $em;

    public function __construct($entityManager)
    {
        $this->em = $entityManager;
    }
    
    public function supports(Response $object): bool
    {
        return $object instanceof DoctrineEntityReponse; // Only support responses of this type
    }
    
    public function handle(Response $object): Response
    {
        return $object->setData($this->em->getRepository($object->getEntity())->findAll()); // Return all records in the entity as a JSON response
    }
}

Then you can use your new class in your action:

<?php

// src/AppBundle/Action/MyAction.php

class MyAction
{
    public function __invoke()
    {
        return new DoctrineEntityResponse(\App\Entity\Order::class); // Pass the Order entity which will return all orders in a JSON response
    }
}

统计信息

  • 总下载量: 21
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-03-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固