Symfony2 - проверка регулярных выражений - PullRequest
1 голос
/ 17 декабря 2011

Мне нужно создать поле, которое в качестве опции получает строку регулярного выражения.

Итак, я создал поле 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 внутрикогда генерируется форма, валидация не работает - передайте любое значение.Есть идеи почему?

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

Почему ты это делаешь? Уже существует валидатор регулярных выражений . Просто используйте обычное текстовое поле с этим валидатором.

В случае, если вам нужна форма без класса модели для привязки, прочитайте соответствующий раздел .

0 голосов
/ 17 декабря 2011

Хорошо, я нашел, что было не так - вы можете добавить константу валидатора только к корневому объекту формы (другие symfony просто игнорируют)Поэтому мне кажется, что мне просто нужно получить корневую форму, добавить туда validator_constant с установленным параметром validator_group.Тогда просто назначьте поле правильной validator_group.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...