elma/devexpressbundle

DevExtreme Js小部件与Doctrine之间的桥梁

安装: 9,164

依赖项: 0

建议者: 0

安全: 0

星标: 4

关注者: 12

分支: 8

开放问题: 3

类型:symfony-bundle

1.2.0 2020-04-09 11:53 UTC

README

Build Status Coding Style

概述

  • 此捆绑包不是DevExpress团队官方捆绑包。
  • 此捆绑包不包含任何与DevExpress库相关的文件
  • 此捆绑包提供了一个简单(且不完整)的DevExpressJs小部件与doctrine之间的桥梁
  • 此捆绑包处于WIP状态,欢迎提交PR

目前只提供了一个dxDataGrid桥梁

安装

将捆绑包添加到您的composer.json文件中

composer require elma/devexpressbundle "~1.0@dev"

在composer中注册捆绑包

//File : app/AppKernel.php
$bundles = [
    // ...
    new Bilendi\DevExpressBundle\BilendiDevExpressBundle,
    // ...
]

dxDataGrid

以下是一个详细的实现示例。

    /**
     * @return \Symfony\Component\HttpFoundation\Response
     * @Route(...)
     */
    public function indexAction(Request $request)
    {
        // Initiate the parser
        $parser = new SearchQueryParser(); 
        // Parse the DevExpress object
        $query = $parser->parse(json_decode($request->get('loadOptions')));

        // Link between the column header and the doctrine field
        $map = [
            "Username" => "u.username",
            "FirstName" => "u.firstName"
        ];
        // Create the config with the mapping
        $config = new DoctrineQueryConfig($map);

        // Return the data and the total number of item
        return $this->json([
            'content' => $this->getContent($config, $query),
            'total' => $this->getTotal($config, $query)
        ]);
    }

返回数据

    private function getContent(DoctrineQueryConfig $config, SearchQuery $query)
    {
        // Create the query builder
        $queryBuilder = $this->getDoctrine()->getManager()->createQueryBuilder();
        // Select Data from the DB
        $queryBuilder->select('u')->from('AcmeUserBundle:Order', 'u');

        // Create the query handle
        $handler = new DoctrineQueryHandler($config, $queryBuilder, $query);
        // Binds the filters, pagination and sorting
        $queryBuilder = $handler->addAllModifiers();

        return $queryBuilder->getQuery()->getResult();
    }

返回项目数量

    private function getTotal(DoctrineQueryConfig $config, SearchQuery $query)
    {
        $queryBuilder = $this->getDoctrine()->getManager('catalogue')->createQueryBuilder();
        $queryBuilder->select('COUNT(u)')->from('AcmeUserBundle:Order', 'u');

        $handler = new DoctrineQueryHandler($config, $queryBuilder, $query);
        // Add only the filters. You must not add the pagination. You should not add sorting (useless for counting)
        $handler->addFilters();

       return $queryBuilder->getQuery()->getSingleScalarResult();
    }