|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Bonjour à tous,
Je voudrais votre avis concernant la personnalisation de l'admin generator. Dans mon cas particulier j'ai un formulaire d'édition dont je dois récupérer la valeur d'une case à cocher. Si c'est true je ne fais rien. Par contre si c'est false dans le contrôleur il faut indiquer qu'il y a redirection de l'admin vers un autre écran. Dans cet écran je demande si l'admin est sur car cela entraine la suppression de donnée. S'il ne valide pas on ne fait rien sinon on efface. Selon vous est-ce préférable de faire ces actions dans l'admin générator ou plutôt dans un module non CRUD ? Petite question subsidiaire : vu que le code est généré automatiquement comment faire pour récupérer la valeur d'un de ces champs? J'ai bien sur fait ( dans mon contrôleur pour tester) mais j'obtiens l'erreur Pourtant ce champ est bien enregistré dans ma BDD et l'admin generator me le propose par défaut dans le formulaire. Une chose est sur j'ai encore beaucoup à apprendre... En vous remerciant d'avance de vos réponses. |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 770 ![]() |
Citation:
NB : Si la demande de confirmation dépend de l'état coché/vierge d'une case du formulaire, un bout de javascript devrait remplacer avantageusement l'appel à confirm() dans l'option onclick de la fonction link_to(). Du moins je le suppose, car je n'ai jamais essayé cette acrobatie. Citation:
Un code du type $information->blabla() est utile dans les partials de la page de liste (car cette page ne contient pas de formulaire), en supposant ici que le modèle traité par ta page est : Information. |
||
|
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Bonjour,
Merci pour ta réponse Hérode. Je vais essayer ta solution. Par contre pour le champ dont je veux récupérer la valeur il s'agit d'un champ de type checkbox. Ce que je ne comprend pas comment faire c'est obtenir la valeur de champ dans mon contrôleur une fois que l'utilisateur à cliqué sur enregistré. Si je veux récupérer ce champ dans le contrôleur c'est que si c'est FALSE (décoché) je veux faire une redirection. Citation:
En espérant avoir été plus clair |
|
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 770 ![]() |
Dans la méthode executeMachinchouette() d'une action, les champs du formulaire se trouvent dans l'objet $request que tu reçois en paramètre.
Code :
$params = $request->getPostParameters(); |
|
|
00
|
|
|
#5 | ||||
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Bonjour,
Après avoir creusé un peu plus mon problème je m'aperçois que c'est la méthode save que je dois personnaliser. Pourquoi personnalisé la méthode save? Dans mon cas précis la personne remplie le formulaire le valide et donc enregistrement des éléments envoyés. Puisque mon traitement consiste à récupérer l'état d'un champ rempli par l'utilisateur la personnalisation du save me semble logique. J'ai été voir la doc officielle ( notamment http://www.symfony-project.org/forms...ne-Integration ) au paragraphe personnalisé la méthode save. Vu que je n'ai que un seul formulaire dans mon backend j'ai voulu faire une fonction save dans lib/form de la façon suivante : Code :
J'ai essayé dans le contrôleur du backend avec : Code :
Désolé de vous embêtez encore mais si quelqu'un peut m'éclairer de ses lumières. EDIT: en regardant dans la barre de debug, je me suis aperçu que je devais placer mon code dans le fichier AgentForm.class.php Maintenant quand j'y met le code de la fonction save j'ai comme erreur Code :
Strict Standards: Declaration of AgentForm::save() should be compatible with that of sfFormObject::save() |
||||
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 770 ![]() |
Si tu surcharges la méthode save() de ton formulaire, il faut en effet respecter la signature de la méthode mère :
où $conn est de type Doctrine_Connection. Pas d'objet $request donc, et pas besoin de tester si la méthode est POST : le formulaire a déjà été initialisé et le test sur POST déjà fait - en amont - dans la méthode executeMachinchouette() de l'action invoquée. |
|
|
00
|
|
|
#7 | ||||
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Désolé de t'embêter encore mais maintenant je bloque sur la suite...
Dans ma class AgentForm j'ai fait Code :
Par contre je pensais qu'avec le sa me remonterais les valeurs jusqu'au contrôleur ce qui n'est pas le cas. En effet Code :
Pour résumer la situation d'un coté j'ai ma surcharge de save de mon form qui reconnait la valeur de mon champ mais je ne comprends pas comment faire pour obtenir cette valeur dans mon contrôleur pour qu'il exécute la redirection. |
||||
|
|
00
|
|
|
#8 | |||||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 770 ![]() |
1 -
Citation:
Tu es dans la couche "modèle" du MVC. La méthode save() sauvegarde l'objet en base de données, avec ou sans traitements spécifiques à ta sauce. Elle ne "remonte" rien. 2 - Par définition d'une surcharge, surcharger MonObjet::save() pour ne faire (si j'ai bien compris ce que tu fais) que Code :
3 - Si ton formulaire s'appelle 'mon_formulaire', ton champ devrait être accessible par : Code :
|
|||||
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Tout d'abord je te remercie une nouvelle fois de ta réponse.
Pour être clair ce que l'utilisateur fait : Dans un formulaire d’édition de l'admin generator j'ai un champ photoOk qui est un case à cocher. L'utilisateur le coche ou le décoche. L'utilisateur valide son choix et envoi donc son formulaire. Ce que je veux faire : Avant qu'il y ait enregistrement dans la bdd, vérification de l'état du champ qui est à TRUE ou FALSE. Si c'est TRUE pas de traitement si c'est FALSE alors la : redirection de l'utilisateur sur la page du formulaire et affichage d'un message demandant confirmation à l'utilisateur. Si l'utilisateur confirme alors suppression d'une photo et dans la bdd enregistrement du FALSE sinon pas de suppression et dans la bdd enregistrement du TRUE. Si je veux modifier la méthode save() c'est parce que j'ai cru comprendre que cette méthode agit avant enregistrement en bdd.Je ne veux enregistrer que s'il y a confirmation quand le champ est à FALSE. Si je me trompe effectivement ce que je fais ne sert à rien. D’après ton dernier post la seul chose que j'ai modifier pour réaliser ces traitement c'est le contrôleur pas besoin de toucher a save().. Merci d'avoir pris la peine de répondre à mes précédentes questions. Cordialement. |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 770 ![]() |
"pris la peine" n'est pas le terme approprié. Je réponds juste sans trop faire de fioritures, au risque de paraitre un peu sec - mais c'est pure paresse diplomatique de ma part. You're welcome, comme disent les angliches, et les forums sont là pour dépanner.
Et surtout : oui, pour autant que je comprenne ton problème, c'est dans le contrôleur que ça se passe. |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : mai 2010 Messages : 24 ![]() |
Bonjour,
Pour t'informer que j'ai réussi ce que je voulais faire. En faite le problème venait que je ne devais pas agir dans executeSave mais dans executeUpdate car je suis dans l'admin generator. En effet dans l'url j'avais un /4 qui correspond au fait de faire un Update. Il ne me reste plus qu'a insérer du javascript pour mon checkbox quand il est décoché, dans le code généré par l'admin generator mais c'est autre chose. Merci pour ta patience et tes explications Hérode. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com