2010-12-05 4 views

Répondre

2

Vous devez effectuer l'appel à partir de votre vue. Comment exactement vous voulez faire cela dépend de ce que vous essayez d'atteindre.

Par exemple:

public function executeFormSubmitAction(sfWebRequest $request) 
{ 
    $this->form = new MyForm(); 
    $this->form->bind($request->getParamter($$this->form->getName()); 
    $this->valid = null; 

    if($this->form->isValid()) 
    { 
     // do stuff with values 

     $this->valid = true; 
    } 
    else 
    { 
     $this->valid = false; 
    } 
} 

Et à votre avis:

<?php if($valid === true): ?> 
    Thanks! 
<?php else: ?> 
    <?php echo $form; ?> 
    <?php if(false === $valid): ?> 
    <!-- your javascript call and related stuff --> 
    <?php endif; ?> 
<?php endif; ?> 

S'il y a une structure tout à fait différente pour les vues de chaque condition pour $valid alors vous pouvez utiliser actuall mettre tout cela dans les partiels et ensuite utiliser include_partial dans les conditions, ou vous pouvez utiliser des modèles de vue séparés et utiliser setTemplate dans votre action pour rendre le bon ... Ou si elles sont vraiment complexes et nécessitent un journal spécial ic vous pouvez utiliser forward et séparer les actions entièrement. Ou s'il s'agit d'une soumission ajax, vous pouvez renvoyer json au lieu de html, puis exécuter votre fonction js dans le cadre du rappel - en vérifiant le json retourné pour une variable signalant le résultat de la validation.

C'est vraiment à vous.

Questions connexes