Пользовательские фильтры / валидаторы в Zend Framework - PullRequest
9 голосов
/ 09 октября 2008

У меня есть структура приложения Zend Framework, как показано ниже:

/application
/library
    /Zend
    /Core
        /Filter
            /MyFilter.php
        /Validator
            /MyValidator.php

Я хотел бы поместить пользовательские фильтры и валидаторы в соответствующие папки и автоматически загружать их при использовании. Однако я не могу понять, как лучше всего это сделать.

Мне нужно решение для работы с Zend_Filter_Input следующим образом:

$filters = array(
    'month'   => 'Digits',
    'account' => 'StringTrim',
    'other'   => 'MyFilter'
);

$validators = array(
    'account' => 'Alpha',
    'other'   => 'MyValidator'
);

$inputFilter = new Zend_Filter_Input($filters, $validators);

Что я уже знаю:

  • Core_Filter_MyFilter реализует Zend_Filter_Interface
  • Очевидно, что фильтры и валидаторы уже включены в мой путь включения.

1 Ответ

18 голосов
/ 09 октября 2008

Я спроектировал и внедрил Zend_Filter_Input в 2007 году.

Вы можете добавить новые префиксы классов, чтобы облегчить загрузку пользовательских фильтров и классов валидаторов. По умолчанию Zend_Filter_Input ищет классы с префиксами "Zend_Filter" и "Zend_Validate". Попробуйте это:

$inputFilter->addNamespace('Core_Filter');

Перед запуском isValid() или другими методами объекта.

Кроме того, вы также можете передать новую строку префикса класса в массиве параметров, четвертый аргумент в конструкторе Zend_Filter_Input:

$options = array('inputNamespace' => 'Core_Filter');
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options);

См. Также документацию , которую я написал для Zend_Filter_Input.

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