dms/dms-filter-bundle

DMS Filter Bundle,使基于注解的实体过滤在 Symfony 中可用

安装数 : 320,262

依赖者: 1

建议: 0

安全性: 0

星星: 77

关注者: 5

分支: 24

开放问题: 10

类型: symfony-bundle


README

此捆绑包使 DMS/Filter 可用于在您的应用程序中进行输入过滤。

当前状态: Build Status Dependency Status

安装

1. 导入库

选项 A) 使用 Composer。

composer require dms/dms-filter-bundle

2. 启用捆绑包

将以下内容添加到您的 AppKernel.php

new DMS\Bundle\FilterBundle\DMSFilterBundle(),

3. 配置

如果找到注解的实体,此捆绑包现在可以自动过滤您的表单。

这是默认行为,如果您想禁用它,请将以下内容添加到您的 config.yml

dms_filter:
    auto_filter_forms: false

使用方法

添加注解

要向实体添加注解,导入命名空间并按如下方式添加它们。

<?php

namespace App\Entity;

//Import Annotations
use DMS\Filter\Rules as Filter;

class User
{

    /**
    * @Filter\StripTags()
    * @Filter\Trim()
    * @Filter\StripNewlines()
    *
    * @var string
    */
    public $name;

    /**
    * @Filter\StripTags()
    * @Filter\Trim()
    * @Filter\StripNewlines()
    *
    * @var string
    */
    public $email;

}

手动过滤

使用 dms.filter 服务和实体的注解来过滤数据。

public function indexAction()
{

    $entity = new \Acme\DemoBundle\Entity\SampleEntity();
    $entity->name = "My <b>name</b>";
    $entity->email = " email@mail.com";

    $oldEntity = clone $entity;

    $filterService = $this->get('dms.filter');
    $filterService->filterEntity($entity);

    return array('entity' => $entity, "old" => $oldEntity);
}

自动过滤

如果找到注解的实体,此捆绑包现在可以自动过滤您的表单。如果启用,实体将在验证之前进行过滤。

级联过滤

此捆绑包自动将过滤扩展到所有返回有效实体的嵌入表单。如果您希望忽略子实体,请将表单的 cascade_filter 选项设置为 false。

class TaskType extends AbstractType
{
    // ...

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
                'cascade_filter' => false,
            ));
    }

    // ...
}

基于服务的方法

如果您需要使用服务中的方法过滤内容,您无需创建自己的注解,只需使用为 Symfony 服务专门设计的 Service Filter 即可。

以下为注解的使用示例,它接受 2 个选项: servicemethod

<?php

namespace App\Entity;

//Import Annotations
use DMS\Filter\Rules as Filter;

//Import Symfony Rules
use DMS\Bundle\FilterBundle\Rule as SfFilter;

class User
{
    /**
    * @Filter\StripTags()
    * @SfFilter\Service(service="dms.sample", method="filterIt")
    *
    * @var string
    */
    public $name;
}

filterIt 方法可以具有任何名称,但它必须接受一个参数(值)并返回过滤后的值。

兼容性

这与 Symfony 2.8 及以上版本兼容,包括 3.0。对于 Symfony 2.3+ 支持,请使用 "^2.0"。

贡献

假设您已安装 composer,已克隆项目仓库,并在其上打开终端。

composer.phar install --prefer-source --dev
vendor/bin/phpunit
vendor/bin/phpcs

测试应通过,您现在可以开始贡献力量。