2010-11-11 17 views
-1

J'utilise la méthode embedRelation symfony pour intégrer le code forms.The est comme ceci:symfony: le validateur personnalisé ne fonctionne pas avec embedRelation?

public function configure() {// ......

$ this-> embedRelation ('Foos comme foos ');

$ this-> getEmbeddedForm ('foos') -> mergePostValidator (nouveau MenuValidatorSchema()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cela ne fonctionne pas. }

+0

StackOverflow est une communauté et vous devez respecter certaines rulse. Quand quelque chose répond à votre question, acceptez cette réponse et fermez la question, ne la laissez pas comme ça. –

Répondre

3

Lorsque plongement formes dans Symfony, le formulaire de niveau supérieur garde une trace de tout. Le schéma du widget, le schéma du validateur, les valeurs par défaut, etc. du formulaire incorporé ne sont plus utilisés directement. Vous pouvez voir ce qui se passe dans sfForm::embedForm.

Notez que dans ce cas, car il est un validateur de poste, il est parfaitement acceptable d'ajouter au formulaire de niveau supérieur, à savoir:

$this->mergePostValidator(new MenuValidatorSchema()); 

Si vous voulez que le schéma de validateur sur le formulaire intégré et n'a pas validateur poste actuel, vous pouvez simplement faire:

$this->validatorSchema['foos']->setPostValidator(new MenuValidatorSchema()); 

Si elle a un existant, vous devrez les transformer en un sfValidatorAnd, faire quelque chose comme:

$this->validatorSchema['foos']->setPostValidator(new sfValidatorAnd(array(
    'validators' => array(
     $this->validatorSchema['foos']->getPostValidator(), 
     new MenuValidatorSchema() 
    ) 
))); 

La syntaxe de cette dernière option est une des raisons pour lesquelles la mise en post validateurs sur le formulaire de niveau supérieur est l'option préférée lorsque disponible.

+0

Je l'ai eu, merci pour votre réponse. – xdazzyy

+1

S'il vous plaît accepter :) –