progmancod/dms-filter-bundle

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

安装: 17

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 0

分支: 25

类型:symfony-bundle


README

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

当前状态:构建状态 依赖状态

安装

1. 导入库

选项A) 使用Composer。

composer require dms/dms-filter-bundle

2. 启用Bundle

将其添加到您的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。对于2.3+的支持,请使用"^2.0"。

贡献

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

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

测试应该通过,并且您可以为项目做出贡献。