如何筛选Symfony2?

问题描述:

首先,我对Symfony 2非常陌生,并开始学习。如何筛选Symfony2?

有没有可能过滤一个值?也许过滤链? 我知道,从Zend框架1这一概念,并2.

例如为:

  • 我有一个字符串“1A-N”
  • 现在我想筛选,以便只有数值通过;结果“1”

我必须在我自己的Symfony上实现这个吗?

我想这样做:

$text = '1A - N'; 
$numberFilter = new NumberFilter(); 
$filteredText = $numberFilter->filter($text); 
//now in $text i find '1' 

但现在我无处发现Symfony的这样的事情会有什么惊喜我很多东西。我认为这是一个完整的堆栈框架,并且这样的功能非常基础。

我发现类似验证器的东西,但他们只是说如果一个值只包含数字或不包含数字。或者是symfony的验证概念,它不仅仅是说它是否是数字,而且还过滤所有其他的smybols?

+0

我不知道我udnerstood的问题:你在找过滤功能alread现有的Symfony或_create_与Symfony的过滤功能的方式吗?在后一种情况下,您可以使用“服务”。你知道它是如何工作的吗? – Blacksad 2014-10-10 12:43:16

+0

也许数据变形金刚? http://symfony.com/doc/current/cookbook/form/data_transformers.html和@tomazahlin一样,我不认为你需要描述的内容。也许你可以更具体地说明你为什么需要过滤器或者可能链接到ZF2文档? – Cerad 2014-10-10 12:43:48

+0

@Blacksad;是的,我在Symfony中寻找现有的功能。 @Cerad:示例:用户输入“1 234”,我只需要数字(邮政编码) 我现在只评估Symfony :-) – Gizzmo 2014-10-10 13:06:55

的答案后,寻找我得到以下的结论。 现在在Symphony 2中没有这个概念。 你必须自己写。

我已经用Symfony构建了相当大的应用程序,从不需要这样的功能。无论如何,过滤器主要用在视图中。 Symfony附带Twig,它具有可以链接的过滤器,并且您可以编写自己的过滤器。但是如果你需要后端的过滤器来做一些后台处理,你可以按照你的建议完成它。

我建议你写一个接口,使用工厂模式,让你设定一个标准,如果你做了很多过滤器,所以它会更容易使链接工作;)

+0

接口肯定;-),但为什么工厂模式和这是一个抽象工厂或工厂方法不明白为什么? – Gizzmo 2014-10-10 13:12:51

+0

为什么选择工厂?所以你可以这样做:$ filteredText = $ textHolder-> setText('text') - > filter('first) - > filter('second') - > getText(); – tomazahlin 2014-10-10 13:22:31

+0

Sry我不明白。 “$ textHolder()='text';”在语法上是错误的;不会:-(工作 “$ textHolder->过滤器( '第一) - >过滤器(' 第二”) - >的getText();“ 是一个https://en.wikipedia.org/wiki/Fluent_interface图案:-) 我想你想的过滤器来创建过滤器对象() - 方法,对吗? – Gizzmo 2014-10-10 13:33:28

根据您想正是:不履行某些规则

  • 允许用户输入形式

    • 使用验证
    • 使用ASSER在实体TS
  • chenge用户输入的情况下,它在形式错误

    • 使用viewransformers的形式
    • 使用事件侦听器
    • 使用事件侦听主义
  • 更改数据库中已存在的数据

    • 在树枝
    • 使用过滤器创建一个命令,从命令行

执行你也可以尝试http://php.net/manual/ro/filter.filters.sanitize.php

+0

好的感谢信息,但似乎没有给出的功能我可以使用。就像我看到我必须自己实现它并将其整合它“更改用户输入以防它是错误的” – Gizzmo 2014-10-10 13:09:23

+0

看着zend过滤器,你有那些在树枝中,过滤像你的“numberfilter”既没有在zend中也没有在symfony中预设/树枝,有很好的理由 – 2014-10-10 13:21:28

+0

请看这里:http://framework.zend.com/manual/2.0/en/modules/zend.filter.set.html有很多过滤器:-) – Gizzmo 2014-10-10 13:24:49