Bonjour j'utilise un mystes basé  sur un service pour modifier
certains champs d'un formulaire et donc je procède de la manière
suivante:
1 - durant la configuration de mon formulaire je me connecte a un
événement qui me notifie si le service veut modifier une valeur d'un
champs,
2 - je procède a la validation du formulaire et dans controller je
vérifie avec isValid(),
3 - si le formulaire est  valide j'appelle le service et celui-ci
notifie mon formulaire si besoin est de modifier une valeur,
4 - si une valeur doit être modifiée, la fonction de mon formulaire
qui est attachée a l’événement est appelée et cette fonction appelle
le widget et pour modifier l'attribut value avec la valeur a
remplacer.

Sur la papier cela devrait fonctionner, dans la réalité ce n'est pas le cas.

Auriez-vous déjà implémenter des choses de ce genre et si oui, comment
auriez vous procéder?



==================
| IMPLEMENTATION |
==================
Formulaire

class TotoForm extends BaseForm {
    public function configure() {
        //........ Widgets et validators ........

        $this->getEventDispatcher()->connect('service.data_changed',
array($this, 'updateData'));
    }

    function updateData(sfEvent $event, array $valueToModify = array()) {
        foreach ($valueToModify as $field => $data) {
            $this->getWidget($field)->setAttribute('value', $data);
        }
    }
}


class customerActions extends sfActions {
    public function executeUpdate(sfWebRequest $request) {
        //..................

        $this->totoForm = new TotoForm();
        if ($request->getMethod() === sfWebRequest::POST) {
            $this->totoForm->bind($request->getPostParameter('toto_form'));
//définie dans la form comme format de nom

            if ($this->totoForm->isValid()) {

$this->service->checkUser($this->totoForm->getValues()); //ou
l’événement est notifie si besoin
            }
        }
    }
}

-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à