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

Symfony PHP Discussion :

Formulaire et ESC_RAW


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut Formulaire et ESC_RAW
    Bonjour

    Je ne trouve pas comment afficher dans un formulaire les données d'un champ en prenant en compte les caractères HTML.

    Dans le fichier class du formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $this->setWidgets(array(
         ...
          'expo_event_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'ExpoEvent')),
        ));
    Dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php foreach ($form as $widget):
    echo $widget->render();
    Sachant donc que cet appel renvoi une liste.

    J'ai essayé en mettant $widget->render(ESC_RAW) mais cela ne fonctionne pas.

    Merci de votre aide.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Par défaut
    Je ne comprends pas bien le problème.

    Un widget sfWidgetFormDoctrineChoice affiche une liste HTML de type <select></select> à partir de données récupérées en base.

    Pourquoi tu voudrais mettre du HTML à l'intérieur ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Merci de ta réponse.

    Ce n'est pas une liste sous la forme <select>, mais sous la forme <ul><li>

    Je veux mettre du HTML car il y a de la mise en forme dans les contenus de cette liste.

    C'est possible ?

  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
    Les objets déclarés dans le contrôleur sont automatiquement escaper.

    La procédure pour ne pas escaper un objet est un peu compliquer.

    Il faut créer dans un nouveau dossier lib/widget à la racine du projet un objet qui étend le sfWidgetFormDoctrineChoice.

    Et il faut modifier le construc du nouvel objet en y ajoutant le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfOutputEscaper::markClassAsSafe( get_called_class() );
    et en n'oubliant pas de faire appel à la méthode parent.

    ATTENTION ! ceci supprime toute protection d'escape pour cet objet. Il est donc important que tu sois sur des données que tu vas afficher.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Tu t'y connais visiblement beaucoup !

    C'est presque bon, il faut toujours qu'il y ai un problème à un endroit, get_called_class nécessite apparemment PHP >= 5.3 et j'ai PHP 5.2.14 installé sur mon serveur. Pas moyen de le mettre à jour...

    Ce qui expliquerait l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function get_called_class() in /home/xxx/public_html/lib/widget/sfWidgetFormDoctrineChoiceSafe.class.php on line 29
    Un moyen de rattraper le coup ?

    Merci !

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    J'ai trouvé un moyen d'ajouter cette fonction à la main.

    Voici donc ma nouvelle classe :

    sfWidgetFormDoctrineChoiceSafe.class.php
    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
    if(!function_exists('get_called_class')) { 
    function get_called_class($bt = false,$l = 1) { 
        // definition de cette fonction
    } 
    } 
    
    class sfWidgetFormDoctrineChoiceSafe extends sfWidgetFormDoctrineChoice
    {
      /**
       * @see sfWidget
       */
      public function __construct($options = array(), $attributes = array())
      {
        $options['choices'] = array();
        sfOutputEscaper::markClassAsSafe( get_called_class() );
        parent::__construct($options, $attributes);
      }
    }
    Dans le modèle du formulaire, je déclare la liste de choix ainsi (donc format <ul><li> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'expo_event_list' => new sfWidgetFormDoctrineChoiceSafe(array('multiple' => true, 'model' => 'ExpoEvent')),
    Le hic est que les caractères HTML ne sont toujours pas pris en compte et apparaissent donc dans le texte.

    Merci de ton aide.

Discussions similaires

  1. Création d'un formulaire sous flash?
    Par ultrakas dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 18h33
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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