2008-10-08 7 views
9

j'ai une structure d'application Zend Framework comme ci-dessous:Filtres personnalisés/validateurs dans Zend Framework

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

je voudrais mettre des filtres personnalisés et validateurs dans leurs dossiers respectifs et les ont chargées automatiquement lorsqu'il est utilisé. Cependant, je ne peux pas comprendre comment faire mieux.

J'ai besoin la solution pour travailler avec Zend_Filter_Input de cette façon:

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

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

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

Ce que je sais déjà:

  • Core_Filter_MyFilter implémente Zend_Filter_Interface
  • De toute évidence, les filtres et validateurs sont déjà dans ma inclure le chemin.

Répondre

18

J'ai conçu et mis en œuvre Zend_Filter_Input en 2007.

Vous pouvez ajouter de nouveaux préfixes de classe pour aider à charger vos filtres personnalisés et des classes de validateurs. Par défaut, Zend_Filter_Input recherche les classes ayant les préfixes "Zend_Filter" et "Zend_Validate". Essayez ceci:

$inputFilter->addNamespace('Core_Filter'); 

Avant d'exécuter isValid() ou d'autres méthodes de l'objet.

Vous pouvez également passer une nouvelle chaîne de préfixe de classe dans le tableau d'options, le quatrième argument du constructeur Zend_Filter_Input:

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

Voir aussi la documentation j'ai écrit pour Zend_Filter_Input.

+0

Excellent! J'ai passé des heures à lire la documentation, mais je dois avoir manqué que cela soit mentionné. Je vous remercie! – leek

+0

C'est à la fin de la page de manuel de ZFI. :-) –

+1

Donc c'est ce que SO définit comme étant 'la réponse définitive à une question donnée' :) –