dms / dms-filter-bundle
DMS Filter Bundle,使基于注解的实体过滤在 Symfony 中可用
v5.1.0
2021-08-03 18:19 UTC
Requires
- php: ^7.4 || ^8.0
- dms/dms-filter: ^2.0 | ^3.0 | ^4.0
- symfony/config: ^4.4 | ^5.0
- symfony/form: ^4.4 | ^5.0
- symfony/framework-bundle: ^4.4 | ^5.0
- symfony/yaml: ^4.4 | ^5.0
Requires (Dev)
- dms/coding-standard: ^8
- doctrine/annotations: ^1.13
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^9
- dev-master
- v5.1.0
- v5.0.0
- 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/framework-bundle-5.4.19
- dev-dependabot/composer/symfony/form-5.4.19
- dev-dependabot/composer/phpunit/phpunit-9.5.28
- dev-dependabot/composer/dms/dms-filter-4.0.2
- dev-dependabot/composer/dms/coding-standard-9.0.0
- dev-progmancod/master
This package is auto-updated.
Last update: 2024-08-25 11:28:32 UTC
README
此捆绑包使 DMS/Filter 可用于在您的应用程序中进行输入过滤。
安装
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 个选项: 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。对于 Symfony 2.3+ 支持,请使用 "^2.0"。
贡献
假设您已安装 composer,已克隆项目仓库,并在其上打开终端。
composer.phar install --prefer-source --dev
vendor/bin/phpunit
vendor/bin/phpcs
测试应通过,您现在可以开始贡献力量。