IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PHP Discussion :

Question sur widget et renderRow() [1.x]


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Par défaut Question sur widget et renderRow()
    Bonjour,

    Je cherche à personnaliser l'affichage de mon $form
    Dans mon partial, j'ai un $form avec un bouton save.
    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            echo $form['id']->renderRow();
          	echo $form['contactid']->renderRow();
          	echo $form['comment']->renderRow(array('rows' => '10', 'cols' =>'50'), 'Commentaire');
    J'ai un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined variable: contact in .../newSuccess.php on line 6

    mas Basecomment Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    abstract class BasecommentForm extends BaseFormDoctrine
    {
      public function setup()
      {
        $this->setWidgets(array(
          'id'         => new sfWidgetFormInputHidden(),
          'contactid'  => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('contact'), 'add_empty' => false)),
          'comment'    => new sfWidgetFormTextarea(),
          'created_at' => new sfWidgetFormDateTime(),
          'updated_at' => new sfWidgetFormDateTime(),
        ));
     
        $this->setValidators(array(
          'id'         => new sfValidatorChoice(array('choices' => array($this->getObject()->get('id')), 'empty_value' => $this->getObject()->get('id'), 'required' => false)),
          'contactid'  => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('contact'))),
          'comment'    => new sfValidatorString(array('max_length' => 65535)),
          'created_at' => new sfValidatorDateTime(),
          'updated_at' => new sfValidatorDateTime(),
        ));
     
        $this->widgetSchema->setNameFormat('comment[%s]');
     
        $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
     
        $this->setupInheritance();
     
        parent::setup();
      }
    et mon configure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class CommentForm extends BaseCommentForm
    {
      public function configure()
      {
      	unset(
          $this['created_at'],
          $this['updated_at']
        );
     
        //$this->setWidget('contactid', new sfWidgetFormInputHidden());
     
      }
    }
    Question annexe:
    Avec le echo $form, les sfWidgetFormInputHidden() ne sont pas affichés. Avec renderRow() cela affiche le label. Mon but étant de bien de créer un champ caché au travers de renderRow().

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Plus d'informations sur le rendu des form dans le template ici.

    Attention, les champs hidden sont à "afficher" avec renderHiddenFielfs() et pas un renderRow().

    Attention, tu vas avoir dans le form que tu donnes en exemple deux champs cachés, un pour Id et un pour le token CSRF. Les deux sont à rendre, d'où l'utilisation impérative du renderHiddenFields() même s'il n'y a pas, à priori, de champs cachés.

    Attention, le nom de ton widget "contactid" me fait dire que ton schéma n'est pas conforme aux préconisation de nommage.

    Attention, il ne faut jamais modifier l'objet Base d'un form, celui-ci est automtiquement généré à chaque régénération du modèle suite à un changement dans le shema.yml et sans avertissement. Toutes modifications qui lui aurait été apportées serait irrémédiablement perdues.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Plus d'informations sur le rendu des form dans le template ici.

    Attention, les champs hidden sont à "afficher" avec renderHiddenFielfs() et pas un renderRow().
    J'avais lu mais oublié cette partie sur les Hidden Fields. Merci.

    Citation Envoyé par Michel Rotta
    Attention, tu vas avoir dans le form que tu donnes en exemple deux champs cachés, un pour Id et un pour le token CSRF. Les deux sont à rendre, d'où l'utilisation impérative du renderHiddenFields() même s'il n'y a pas, à priori, de champs cachés.
    ok!

    Citation Envoyé par Michel Rotta
    Attention, il ne faut jamais modifier l'objet Base d'un form, celui-ci est automtiquement généré à chaque régénération du modèle suite à un changement dans le shema.yml et sans avertissement. Toutes modifications qui lui aurait été apportées serait irrémédiablement perdues.
    Je ne le modifie pas. J'utilise bien le configure!

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Citation Envoyé par Laurent001 Voir le message
    Je ne le modifie pas. J'utilise bien le configure!
    Configure OK, mais pas dans le form Base...

    La méthode configure() comme la setup() pouvant parfaitement se retrouver dans les deux objets il est important de faire bien attention...

    J'ai déjà ramassé tellement de dégât après un "build --all" je prend les précaution

    Si non, ça s'affiche le template ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Par défaut
    Configure OK, mais pas dans le form Base...

    La méthode configure() comme la setup() pouvant parfaitement se retrouver dans les deux objets il est important de faire bien attention...

    J'ai déjà ramassé tellement de dégât après un "build --all" je prend les précaution
    Oui je comprend. Merci de ce warning.
    J'avais bien compris cette partie et la trouve pratique/excellente. J'ai déjà rechargé mon schema.yml une fois et puis constater ce comportement. Quelques modifications dans les templates (+fixtures) et c'est nickel !

    Si non, ça s'affiche le template ?
    Oups, oublié de le dire mais impeccable. Je vais pouvoir attaquer sereinement ma petite personnalisation.

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo