Le 19 février 2011 15:23, diaris <[email protected]> a écrit :
> Bonjour !
Salut !
> Symfony est cool mais il y a beaucoup de non-dit dans le tuto.
> J'ai mis en place un formulaire d'inscription sous symfony . Je n'ai
> pas voulu utiliser les validateurs symfony car j'en avait déjà qui
> marchait correctement sous javascript et plus pratique.
Aïe ! C'est très dangereux... Tu ne seras jamais sûr de tes données
car en désactivant javascript je met ce que je veux dans les champs
;-)
> Tout se présente parfaitement comme je le voulais sauf que mon formulaire ne
> veut pas s'enregistrer quand je fais "$custommer->save". j'ai essayé
> de trouver où se trouvait l'erreur et je constate que $form->isValid()
> du formulaire renvoie False donc le bloc de code ne s'execute pas.
> ___________________________________
> CODE___________________________________________
>
> protected function processForm(sfWebRequest $request, sfForm $form)
> {
> $form->bind($request->getParameter($form->getName()), $request-
>>getFiles($form->getName()));
> if ($form->isValid())
> {
> $customer = $form->save();
> $customer->setCustomerLevel(1); // 1 = Membre / 9 = Admin
> $customer->setCustomerAccountEtat(0); // 0 = Non activé / 1 =
> Actif / 2 = Banni
> $customer->save();
> $this->redirect('customer/edit?customer_id='.$customer-
>>getCustomerId());
> }
> }
> __________________________________________________________________________________
>
> Voici mes questions:
>
> 1- si je ne charge pas de fichier dans mon formulaire, suis je obligé
> d'ajouter $request->getFiles($form->getName()) quand je fait
> $form->bind($request->getParameter($form->getName()), $request-
>>getFiles($form->getName())); ?
Non
>
> 2- je cherche à installer swiftmailer en vain. je crois que je dois
> dézipper un son package dans lib/vendor mais je n'arrive pas a le
> télécharger. Ce serait cool si je pourrais avoir un lien direct pour
> avoir le .zip
Si t'es en SF 1.3 ou 1.4 il n'y a rien à faire à part activer l'envoi
des emails dans le setting.yml
http://www.symfony-project.org/gentle-introduction/1_4/en/11-Emails
--> Configuration
>
> 3- Comment faire pour valider mon formulaire car dans le frontend_dev
> il met comme erreur:
> Warning: array_key_exists() [function.array-key-exists]: The first
> argument should be either a string or an integer in C:\wamp\bin\php
> \php5.3.0\PEAR\symfony\util\sfParameterHolder.class.php on line 53 ?
Il faut mettre un "%s" un nom à ton formulaire :
$this->widgetSchema->setFormFormatterName('list[%s]');
>
> 4- ou puis je tester pour savoir si mon formulaire envoie les valeur
> saisie et comment lui dire à quelle champ dans ma base de donné il
> doit lier les valeur envoyée par POST ?
--> Il manque les champs cachés
echo $form-renderHiddenFields();
>
> **** echo $form->bind(...... ?
>
> **** $this->widgetSchema->setNameFormat('customer[%s]'); ?
>
> Voici mon code :
> ========================================================================
> //newSuccess
> <form class="frm" action="<?php echo url_for('create_account'); ?>"
> method="POST" id="myform">
> <fieldset>
> <legend><?php echo __('Devient dès maintenant membre de
> togoastuce'); ?></legend>
> <br><br>
> <ul class='formRegister'>
> <?php foreach ($form as $widget): ?>
> <?php if (!$widget->isHidden()) { ?>
> <li>
> <?php echo $widget->renderLabel(); ?>
> <span><?php echo $widget->renderHelp() ?></
> span><br>
> <?php echo $widget->render() ?>
> </li>
>
> <?php } else { ?>
> <li><?php echo $widget->render() ?></li>
> <?php } ?>
> <?php endforeach; ?>
> </ul>
>
> <p><input class="DIAR_btn" onclick="controler(1,this.form);"
> type="button" value="<?php echo __('S\'inscrire'); ?>"><input name=opt
> type=hidden value=inscription><input id="diar_exist" type=hidden
> value="<?php echo url_for('@ajax'); ?>"><div id="validmsg"></div></p>
> </fieldset>
> </form>
>
> =================================================================================
> controler(1,this.form) //permet de valider mon formulaire et fait
> aussi les différent contrôle javascript
> =================================================================================
> //CostumerForm.class.php
> class CustomerForm extends BaseCustomerForm
> {
> public function configure()
> {
> $this-
>>useFields(array('customer_pseudo','customer_mail','customer_password'));
> $this->setWidgets(array(
> 'insc_pseudo' => new sfWidgetFormInput(),
> 'insc_email' => new sfWidgetFormInput(),
> 'insc_conf_email' => new sfWidgetFormInput(),
> 'insc_password' => new sfWidgetFormInputPassword(),
> 'insc_conf_password' => new sfWidgetFormInputPassword(),
> ));
>
> $this->widgetSchema->setLabels(array(
> 'insc_pseudo' => 'Pseudo',
> 'insc_email' => 'E-mail',
> 'insc_conf_email' => 'Confirmer votre e-mail',
> 'insc_password'=> 'Mot de passe',
> 'insc_conf_password' => 'Confirmer le mot de passe',
> ));
> $this->widgetSchema->setHelp('insc_pseudo', 'Ce nom sera visible au
> publique.');
> $this->widgetSchema->setHelp('insc_email', 'Attention : Un méssage
> de validation sera envoyé à cette adresse email.');
> $this->widgetSchema->setFormFormatterName('list');
>
> }
>
> public function updateCustomer_passwordColumn($value)
> {
> if(!empty($value)) { $value = md5($value); }
> return $value;
> }
> }
Bonne soirée !
--
Albin
--
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