progmancod / dms-filter-bundle
DMS Filter Bundle,使基于注解的实体过滤在Symfony中可用
4.0.4
2023-01-19 19:29 UTC
Requires
- php: ^8
- dms/dms-filter: ^2.0 | ^3.0 | ^4.0
- symfony/form: ^3.4 | ^4.0 | ^5.0 | ^6.0
- symfony/framework-bundle: ^3.4 | ^4.0 | ^5.0 | ^6.0
- symfony/yaml: ^3.4 | ^4.0 | ^5.0 | ^6.0
Requires (Dev)
- phpunit/phpunit: ^6
- dev-master
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- v4.0.0
- v3.3.0
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1
- v3.0
- v3.0-alpha
- 2.1.0
- v2.0.0
- 2.0.0-beta2
- 2.0.0-beta1
- v1.1.2
- v1.1.1
- v1.1
- 1.0.2
- 1.0.1
- 1.0.0
- dev-dependabot/composer/symfony/yaml-4.4.7
- dev-dependabot/composer/symfony/http-foundation-4.4.7
- dev-dependabot/composer/symfony/cache-4.3.11
- dev-dependabot/composer/phpunit/phpunit-7.5.20
- dev-dependabot/composer/symfony/form-4.1.9
- dev-dependabot/composer/symfony/dependency-injection-4.1.12
- dev-dependabot/composer/symfony/framework-bundle-4.1.12
- dev-fix/coding-standard
This package is not auto-updated.
Last update: 2024-09-18 05:03:27 UTC
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个选项:service和method。
<?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
测试应该通过,并且您可以为项目做出贡献。