Non je fais pas de soumissions intermédiaires.
J'ai
public function executeIndex()
{
if ($this->getRequest()->getMethod() != sfRequest::POST)
{
return sfView::SUCCESS;
}
else
{
$this->redirect('vente/list')
}
}
public function executeList()
{
$dep = $this->getRequest->getParameter('departement');
$c = new Criteria();
$c->add(VillePeer::DEPT, $dep, Criteria::LIKE)
VillePeer::doSelect($c)
}
Mais je n'ai pas le parametre donc la requête est pas bonne.
Merci.
Lionel
Le 15/06/07, nautilebleu <[EMAIL PROTECTED]> a écrit :
>
>
> La méthode que je t'ai décrite fonctionne très bien quand on valide
> directement l'ensemble du formulaire.
> En fait au départ, j'avais compris que tu affichais une fois le
> formulaire définitivement validé une autre page.
>
> Là, si je comprend bien, tu fais des soumissions intermédiaires?
>
> Si j'ai bien compris, je pense que la méthode que je t'ai décrite va
> être un peu compliquée à mettre en oeuvre dans ce cas, car il
> faudrait faire:
> public function executeIndex()
> {
> if ($this->getRequest()->getMethod() != sfRequest::POST)
> {
> //affiche le formulaire
> [...]
> }
> else
> {
> //prend en charge la sousmission du formulaire
> [...]
> switch ($case) {
> case 'departement':
> // code pour sélectionner les villes de ce département
> [...]
> // code pour afficher le formulaire (le même que dans le if,
> ce qui veut dire que tu casses le principe DRY, sauf a mettre tout ce
> code dans une methode et l'appeler 2 fois)
> [...]
> break ;
> case 'final'
> // insertion dans la base de données
> [...]
> // tout est OK
> $this->redirect(@vente_index') ;
> }
> }
> }
>
> Autres solutions:
> * faire plusieurs actions pour les différentes étapes (executeStep1,
> executeStep2, etc.) de ton formulaire qui chargeront toutes le même
> template xxxSuccess.php
> * faire en Ajax la requête sur pour récupérer les villes si tu peux te
> le permettre (Accessibilité, support navigateur, etc.) Quand on change
> la valeur du champ département, tu fais une requête xmlHTTPRequest qui
> retourne la liste des villes de ce département)
>
> Nautile
>
> On 15 juin, 16:44, "lionel chanson" <[EMAIL PROTECTED]> wrote:
> > Ok j'essaye ta méthode, mais là je nage, y a un truc que je saisi pas.
> >
> > Disons que j'ai un champ departement. La personne rentre un chiffre et
> je
> > lui ressort toute les villes connues.
> >
> > Donc j'ai toute la partie contrôle pas de blem. Mais je comprend pas
> trop ce
> > que je dois faire ensuite.
> >
> > Si je renvoie le parametre pour executer la requete ? ou j'execute la
> > requete et j'envoi le résultat ?
> >
> > Merci Nautile.
> > Lionel
> >
> > Le 15/06/07, nautilebleu <[EMAIL PROTECTED]> a écrit :
> >
> > > En fait je pense que le problème c'est que tu postes les données dans
> > > une autre action que celle qui affiche le formulaire.
> > > En fait, la "bonne" façon c'est de poster ton formulaire dans la même
> > > action que celle qui a écrit le formulaire.
> > > Dans ton code tu aurais qqch du genre:
> > > public function executeIndex()
> > > {
> > > if ($this->getRequest()->getMethod() != sfRequest::POST)
> > > {
> > > //affiche le formulaire
> > > [...]
> > > }
> > > else
> > > {
> > > //prend en charge la sousmission du formulaire
> > > [...]
> > > // tout est OK
> > > $this->redirect(@vente_list') ;
> > > }
> > > }
> > > public function executeList()
> > > {
> > > }
> >
> > > Cela évitera le pb que tu as avec les formulaires et en outre, ça
> > > empêche le visiteur de poster 2 fois le formulaire s'il recharge la
> > > page.
> >
> > > Nautile
> > > On 15 juin, 13:35, "lionel chanson" <[EMAIL PROTECTED]> wrote:
> > > > Salut,
> >
> > > > J'ai un module vente.
> >
> > > > Dans le fichier action j'ai
> > > > executeIndex() dont le template affiche le formulaire.
> > > > executeList() qui traite les données envoyées pour faire une requête
> et
> > > > affiche le résultat dans le template listSuccess
> > > > handleErrorList() avec forward('vente', 'index')
> > > > validateList() pour une vérification particulière
> >
> > > > J'ai mon fichier dans vente/validate/list.yml pour le contrôle de la
> > > saisie.
> > > > J'ai rajouté fillin pour conserver les données en cas d'erreur.
> >
> > > > Dans ce fichier je met donc
> >
> > > > methods: etc...
> > > > fields: etc...
> >
> > > > fillin:
> > > > enabled: true
> > > > etc....
> >
> > > > Tout fonctionne !
> > > > Mais lorsque l'action list est effectuée dans logs and var de
> symfony,
> > > j'ai
> > > > ces 3 lignes.
> >
> > > > 20[image: Info] Filterexecuting filter "sfFillInFormFilter"
> 21[image:
> > > Error]
> > > > ExceptionNo form found in this page 22[image: Error] FilterNo form
> > > found in
> > > > this page
> > > > Pour moi c'est normal, puisqu'il n'y a pas d'erreurs, j'affiche le
> > > résultat,
> > > > pas le formulaire. Qu'est-ce qui cloche ?
> >
> > > > Merci
> > > > Lionel
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr"
de Google Groupes.
Pour transmettre des messages à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [EMAIL PROTECTED]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---