2008-10-08 20 views
9

que tienen una estructura de aplicación Zend Framework de la siguiente manera:filtros personalizados/validadores de Zend Framework

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

me gustaría poner filtros y validadores personalizados en sus respectivas carpetas y hacer que se cargan automáticamente cuando se utiliza. Sin embargo, no puedo encontrar la mejor forma de lograr esto.

Necesito la solución para trabajar con Zend_Filter_Input de esta manera:

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

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

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

lo que ya sé:

  • Core_Filter_MyFilter implementa Zend_Filter_Interface
  • Obviamente, los filtros y validadores ya están en mi incluir camino.

Respuesta

18

I diseñados e implementados Zend_Filter_Input en 2007.

Puede añadir nuevos prefijos de clase para ayudar a cargar los filtros y validadores clases personalizadas. De forma predeterminada, Zend_Filter_Input busca las clases que tienen los prefijos "Zend_Filter" y "Zend_Validate". Prueba esto:

$inputFilter->addNamespace('Core_Filter'); 

Antes de ejecutar isValid() u otros métodos del objeto.

Alternativamente, también puede pasar a una nueva cadena de prefijo de clase en la matriz de opciones, el cuarto argumento al constructor Zend_Filter_Input:

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

Véase también el documentation que escribí para Zend_Filter_Input.

+0

¡Excelente! Pasé horas leyendo la documentación, pero debo haberme olvidado de que se mencionara. ¡Gracias! – leek

+0

Está al final de la página del manual de ZFI. :-) –

+1

Así que esto es lo que SO define como 'la respuesta definitiva a una pregunta dada' :) –