Symfony Rouging caractères speciaux

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Symfony Rouging caractères speciaux

par naholyr » 18 févr. 2009, 12:26

sfForm est une vraie plaie pour les usages quotidiens : petits formulaires souvent très personnalisés. Parce que même si ce n'est pas forcément compliqué de définir un nouveau widget ça fait tout de même beaucoup de code. Un formulaire avec 2 widgets custom (genre une select-box avec un peu de JS spécifique, et une checkbox à 3 états) et un bouton submit ça fait quand même 3 classes à écrire, voire 5 si on fait des "renderer" spécifiques, voir 7 si on ajoute les "validator"... Autant d'objets à instancier pour un petit formulaire, des fois ça donne un sentiment de lourdeur atroce :)

En revanche avec les PropelForms là on gagne en puissance de manière assez remarquable, et le nouvel admin-generator en profite au passage. C'est assez savoureux quand on écrit l'action d'inscription, pour un petit aperçu voici l'action (c'est pas un copier-coller mais un aperçu de ce à quoi ça ressemble) :
$this->form = new sfGuardUserForm();
$data = $request->getParameter('user');
$this->form->bindValues($data);
if ($this->form->isValid()) {
  $this->form->save();
}
et le template :
<form action="sfGuardAuth/register" method="post">
<ul>
  <?php echo $form->renderUsing('list') ?>
  <li><input type="submit" /></li>
</ul>
</form>
La classe du formulaire en elle-même n'a pas eu à être écrite parce qu'elle l'est dans le plugin, mais globalement de toute façon elle hérite d'un PropelForm auto-généré avec le reste du modèle, et se contente de se fusionner avec un autre formulaire (pour la liaison utilisateur <-> profil). Et d'ailleurs au passage ce "sfForm::mergeForm()" est une petite merveille ;)


Bref du bon du moins bon, mais ça apporte une puissance d'extensibilité similaire à ce qu'on a avec les classes "Configuration" apparues dans la 1.1.


Mais on s'éloigne vachement du sujet, et je n'ai hélas toujours pas la possibilité de faire mes tests pour te répondre à ton problème initial x]

par pascaltje » 18 févr. 2009, 10:59

je n'ai pas utilisé l'admin generator, par contre sfForm oui.

alors au début, beurk, mais ensuite c'est balèze.

points positifs :
- génération du model et des formulaires, echo $form dans le template : on a un prototype très rapidement
- le model objet permet de modifier un élément via plusieurs formulaires facilement (héritage) par exemple un profil qui hérite du form de base, et plusieurs forms pour modifier la présentation, le mail, l'avatar
- personnalisation assez simple des champs du formulaire
- personnalisation relativement simple des validateurs
- création de validateurs custom facile (cf mon tuto : http://forum.symfony-project.org/index.php/t/16172/ )
- les cas généraux sont documentés

points négatifs :
- la doc est incomplète pour les utilisations poussées
- la doc présente plusieurs points d'entrée : docs officielles, blog, API... il faut savoir où chercher

mon résumé : puissant mais pas assez limpide dans la documentation

A+

Pascal

par fab » 18 févr. 2009, 00:30

Ca se passe comment l'admin générator sous 1.2 & .3 ? Car visiblement c'était un vrai casse tête la transition vers sfForm :)
Au passage sfForm BEURK

par naholyr » 18 févr. 2009, 00:12

Attention au niveau des versions, bon là c'est trop tard puisque le projet est commencé, mais il faut bien lire les différentes déclarations avant de choisir ;)
En l'occurrence la 1.0 est stable, la 1.1 n'était qu'une version de transition entre 1.0 et 1.2 (introduction de sfForm, introduction des classes Configuration, mais perte de l'admin generator, compat 1.0 encore maintenue pour quelques éléments), alors que la 1.2 est une vraie release actuellement dite stable, mais à mon avis il faut toujours attendre une stabilité de plusieurs mois avant d'utiliser un framework pour un projet en production.
La 1.3 est à nouveau une version de transition (a priori entre la 1.2 et la 2.0).

Moralité : c'est la 1.0 que vous auriez du utiliser ;)

Mais bon là n'est pas le sujet. Je vais tester de mon côté mais étant en déplacement je risque de ne pas pouvoir te répondre "pour de vrai" avant ce week-end.

par fab » 17 févr. 2009, 17:03

Hum non je pense pas
qa1-2:
url: /questions-reponses
param: { module: questionsReponses, action: index }

qa2:
url: /question/:title/:id/*
param: { module: questionsReponses, action: question}

qa4:
url: /questionsReponses/:cat-:spec/*
param: { module: questionsReponses, action: index }
:s

par pascaltje » 17 févr. 2009, 16:29

c'est clair que la V1.1 est une erreur.

Pour la migration vers 1.2, j'ai fait ce qui était dans la doc, mais bon, le mode "je me démerde à la main" a pris le dessus. entre autres bugs apparus :
- un module qui ne marche plus (probablement lié au SQL inside)
- une route qui ne marchait plus
- il fallait être connecté pour s'inscrire au site :P

pour tes routes, est-ce que d'autres routes ressemblent à celle-ci (genre pattern pouvant être reconnu par plusieurs routes différentes) ?

A+

Pascal

par fab » 17 févr. 2009, 16:25

Si j'enlève le /* il me dit
Unable to parse "questionsReponses/:cat-:spec" route near "-:spec".

par fab » 17 févr. 2009, 16:23

Projet de trop grosse taille pour envisager une migration :), d'autant plus que la 1.2 n'est visiblement qu'une version "batarde" en attendant la 1.3... Et puis je trouve que c'est du n'importe quoi aussi de sortir une version 4-5 mois après la release de la précedente, surtout quand il y a eu les vacances entre les deux :)

par pascaltje » 17 févr. 2009, 15:47

La partie requirements n'est pas obligatoire, mais je viens de tester au cas ou et j'ai toujours la même erreur :'(

Je suis en 1.1 :)
il est temps d'expérimenter les joies de la migration en 1.2 :)

sinon tu peux tenter de faire des routes de test plus simples, sans le "*" à la fin, mais avec le "-", pour comprendre un peu mieux ce qui se passe.

A+

Pascal

par fab » 17 févr. 2009, 15:17

La partie requirements n'est pas obligatoire, mais je viens de tester au cas ou et j'ai toujours la même erreur :'(

Je suis en 1.1 :)

par naholyr » 16 févr. 2009, 20:04

Et si jamais la solution de pascal ne répond pas au problème, à tout hasard, version de symfony ? ^^

par pascaltje » 16 févr. 2009, 17:38

Il manque pas une partie à ta route ?

genre :

Code : Tout sélectionner

qa4: url: /questionsReponses/:cat-:spec/* param: { module: questionsReponses, action: index } requirements: { cat: \w+ , spec: \w+ }
A+

Pascal

par fab » 16 févr. 2009, 16:04

Bon après test j'y arrive pas :'(

Voici mon message d'erreur
Unable to parse "questionsReponses/:cat-:spec/*" route near "-:spec/*".

voici mon routing.yml

Code : Tout sélectionner

qa4: url: /questionsReponses/:cat-:spec/* param: { module: questionsReponses, action: index }
et mon factories.yml

Code : Tout sélectionner

routing: class: sfPatternRouting param: load_configuration: true suffix: . default_module: default default_action: index variable_prefixes: [':'] segment_separators: ['/', '.', '-'] variable_regex: '[\w\d_]+' debug: %SF_DEBUG% logging: %SF_LOGGING_ENABLED% cache: class: sfFileCache param: automatic_cleaning_factor: 0 cache_dir: %SF_CONFIG_CACHE_DIR%/routing lifetime: 31556926 prefix: %SF_APP_DIR%

par fab » 16 févr. 2009, 14:30

Merci naholyr :)

par naholyr » 16 févr. 2009, 12:13

Je fais court mon train arrive : dans le livre, au chapitre sur le routage cherche "separator" dans la page. Ajoute le tiret comme séparateur.