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 :

Problème affichage champ radio [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut Problème affichage champ radio
    Bonjour,

    J'ai une enttié "Produit" à laquelle je peux ajouter des images, il faudrait que je puisse définir l'image principale de l'album photo via un champ radio.

    Le hic est que je ne sais pas comment gérer l'affichage du champ radio pour qu'un seul champ soit sélectionnable...

    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
     
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('file','file',array(
                "required" => true,
                "attr" => array(
                    "accept" => "image/*",
                    "multiple" => false,
                )
                ))
                ->add('main', 'radio', array(
                    'attr' => array('name' => 'main'),
                    'required'  => true,
                ))
                ;
        }
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Il faut que tu passes par un champ de type choice en jouant avec les attributs multiple et expanded : Champ de type Choice.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Merci mais cela ne correspond pas à mon besoin, je ne cherche pas à passer une liste ou une entité.

    Je cherche à ajouter un boolean.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Points : 80
    Points
    80
    Par défaut
    Edit: Suite à l'effacement par la modération de la partie du message initial que je citais, celui-ci n'a plus aucune raison d'être donc je l'efface.

    Pour la modération, quand on répond à un point de détail du message initial, il me parait primordial de le citer afin que chacun puisse comprendre de quoi on parle. En effaçant la citation, tout en laissant le reste du message intact, vous dénaturez le message, vous nuisez à la lisibilité du forum et vous compliquez la tache de ceux qui veulent aider. Bref, l'antithèse même de ce que représente un forum communautaire !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Chaque image est un formulaire imbriqué. Ca t'aide ?

    Je pense que je vais créer un template personnalisé pour ces formulaires imbriqués.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Points : 80
    Points
    80
    Par défaut
    D'accord, donc en même temps que tu créer ton produit (ou que tu l'édites), tu lui ajoutes des images et tu en définies une en tant qu'image principale, c'est bien cela ?

    Dans ce cas, je ne pense pas que tu puisses aboutir directement au résultat que tu souhaites à moins que l'attribut choice_list d'un champ de type choice te permette de passer des formulaires mais j'en doute; mais il y a peut-être quelque chose à explorer de ce côté-là.

    Sinon, tu dois reproduire le fonctionnement d'un bouton radio avec du JS et ajouter un validateur pour t'assurer qu'il n'y a pas deux boutons sélectionnés.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 116
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    J'ai opté pour une autre solution, la création d'un champs personnalisé:
    Au final, cela fonctionne pour l'affichage mais pas pour l'enregistrement car name="....name="...[files][1][main]"" ou "1" est le numéro du champ.

    Je vais laisser tomber l'idée de choisir la photo principale et afficherais la première photo en tant que photo d'album. Je ne souhaite pas mettre de javascript partout.

    Merci pour ton aide

    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
     
    <?php
    namespace MyApp\ProductBundle\Form\CustomField;
     
    use Symfony\Component\Form\AbstractType;
     
    class mainImageChoiceType extends AbstractType
    {
        public function getParent()
        {
            return 'radio';
        }
     
        public function getName()
        {
            return 'main';
        }
    }
    config.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Twig Configuration
    twig:
        form:
            resources:
                - 'MyAppProductBundle:Form:fields.html.twig'
    fields.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% block main_widget %}
        {% spaceless %} 
            <input type="radio" name="main" {% if value is not empty %}value="{{ value }}" {% endif %}/>
        {% endspaceless %}
    {% endblock %}
    File type
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
     
    namespace MyApp\ProductBundle\Form\Type\File;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    use MyApp\ProductBundle\Form\CustomField\mainImageChoiceType;
     
    class CreateFormType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('file','file',array(
                    "required" => true,
                    'label' => false,
                    "attr" => array(
                        "accept" => "image/*",
                        "multiple" => false,
                        )
                    ))
                  ->add('main', new mainImageChoiceType(), array(
                    'label' => false,
                    'required'  => false
                ))
                ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'MyApp\ProductBundle\Entity\File',
                'intention'  => 'file'
            ));
        }
     
        public function getName()
        {
            return 'file';
        }
    }

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

Discussions similaires

  1. [2.x] Problème affichage champ de type "time"
    Par hx.jonathan dans le forum Symfony
    Réponses: 2
    Dernier message: 06/11/2011, 14h08
  2. Réponses: 2
    Dernier message: 14/03/2011, 14h11
  3. [AC-2007] problème affichage champ calculé sous 2007
    Par Aladin_23 dans le forum IHM
    Réponses: 9
    Dernier message: 23/11/2010, 10h05
  4. Réponses: 2
    Dernier message: 09/09/2009, 11h40
  5. [MySQL] Problème affichage champs
    Par dark0502 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/02/2008, 18h10

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