Php Symfony2-正则表达式验证

Php Symfony2-正则表达式验证,php,regex,validation,symfony,Php,Regex,Validation,Symfony,我需要创建一个字段,作为选项获取正则表达式字符串 因此,我创建了PatternType字段: public function getDefaultOptions(array $options) { $defaultOptions = array( 'data' => null, 'data_class' => null, 'trim' => true,

我需要创建一个字段,作为选项获取正则表达式字符串

因此,我创建了PatternType字段:

public function getDefaultOptions(array $options)
{

    $defaultOptions = array(
        'data'              => null,
        'data_class'        => null,
        'trim'              => true,
        'required'          => true,
        'read_only'         => false,
        'max_length'        => null,
        'pattern'           => null,
        'property_path'     => null,
        'by_reference'      => true,
        'error_bubbling'    => false,
        'regexp'            => false,
        'error_mapping'     => array(),
        'label'             => null,
        'attr'              => array(),
        'invalid_message'   => 'This value is not valid',
        'invalid_message_parameters' => array()
    );

    $class = isset($options['data_class']) ? $options['data_class'] : null;

    // If no data class is set explicitly and an object is passed as data,
    // use the class of that object as data class
    if (!$class && isset($options['data']) && is_object($options['data'])) {
        $defaultOptions['data_class'] = $class = get_class($options['data']);
    }

    if ($class) {
        $defaultOptions['empty_data'] = function () use ($class) {
            return new $class();
        };
    } else {
        $defaultOptions['empty_data'] = '';
    }


    $patt = $options['regexp'];

    unset($options['regexp']);

    $defaultOptions['validation_constraint'] = new Regex(
                                                      array(
                                                          'pattern' => $patt,
                                                          'match' => true,
                                                          'message' => 'Niewłaściwy format'
                                                           )
                                                        );


    var_dump($defaultOptions);


    return $defaultOptions;
}

var_dump返回格式良好的设置数组,其中包含regex对象-但生成表单时验证无效-传递任何值。知道为什么吗?

你为什么要这样做?已经有了一个新的解决方案。只需在验证器中使用普通文本字段


如果您需要一个没有模型类绑定的表单,请阅读。

为什么要这样做?已经有了一个新的解决方案。只需在验证器中使用普通文本字段


如果您需要一个没有模型类绑定的表单,请阅读。

好的,我发现了问题所在-您只能将验证器常量添加到根表单对象(其他symfony只需忽略)。所以,我需要的似乎是简单地获得根形式,添加validator\u常量和validator\u组选项集。然后只需分配字段正确的validator_组。

好的,我发现了问题所在-您只能将validator常量添加到根表单对象中(其他symfony只需忽略)。所以,我需要的似乎是简单地获得根形式,添加validator\u常量和validator\u组选项集。然后只需分配字段正确的validator\u组。

我已经在上面完成了:创建了扩展抽象类型的字段,并返回默认选项数组,validator\u常量=new Regex(params)。(继续上一篇文章)我正在做的是基于xsd文件生成表单的应用程序。首先,我们将其转换为php静态类,其中包含在注释中写入的字段(如模式或类型)的属性。每个xsd文件都有相当大的树状结构,包括其他文件及其属性。显然,我需要一些自定义字段来验证,例如波兰纳税人编号(我们已经将模式编写为字段的属性)。问题是dosent可以工作…我们所做的注释不是symfony2验证注释-我们通过它传递更多的信息,所以表单是由formbuilder->add()创建的;你确定你需要一张表格吗?你们可以不用表格就使用验证器。是的,客户为允许你们将损益表发送到税务局的网站付费,所以我可能需要表格;)但政府非常乐意在xsd文件中发布这些声明,并对其进行封存验证。我在上面做过:创建了扩展抽象类型的字段,并返回了默认选项数组,其中validator_constant=new Regex(params)。(上一篇文章的继续)我正在做的是基于xsd文件生成表单的应用程序。首先,我们将其转换为php静态类,其中包含在注释中写入的字段(如模式或类型)的属性。每个xsd文件都有相当大的树状结构,包括其他文件及其属性。显然,我需要一些自定义字段来验证,例如波兰纳税人编号(我们已经将模式编写为字段的属性)。问题是dosent可以工作…我们所做的注释不是symfony2验证注释-我们通过它传递更多的信息,所以表单是由formbuilder->add()创建的;你确定你需要一张表格吗?你们可以不用表格就使用验证器。是的,客户为允许你们将损益表发送到税务局的网站付费,所以我可能需要表格;)但政府非常乐意在xsd文件中发布这些声明及其封存验证。