J'ai créer un formulaire de la façon suivante qui appelle un controlleur et une action qui n'est pas lié à la vue sur laquelle il s'affiche :

<?php echo $this->Form->create(null, array('url' => array('controller' => 'answersusers', 'action' => 'answer'))); ?>
                    <?php
                            echo $this->Form->input('answer_id', array(
                                    'legend' => false,
                                    'div' => true,
                                    'label' => true,
                                    'type' => 'radio',
                                    'options' => $options
                            ));
                            echo $this->Form->input('AnswersUser.question_id', array(
                                    'type' => 'hidden',
                                    'value' => $day'Question']'id']
                            ));
                            echo $this->Form->input('AnswersUser.user_id', array(
                                    'type' => 'hidden',
                                    'value' => $this->Session->read('Auth.User.id')
                            ));
                            ?>
                    <?php echo $this->Form->end(__('Submit')); ?>

Pour le champ answer_id j'ai la chose suivante :

<div class="input radio">
    <input name="data[Day][answer_id]" id="DayAnswerId_" value="" type="hidden"><input name="data[Day][answer_id]" id="DayAnswerId19" value="19" type="radio">
    <label for="DayDayAnswerId19">A region of high frequency CpG sites</label>
    <input name="data[Day][answer_id]" id="DayAnswerId20" value="20" type="radio">
    <label for="DayDayAnswerId20">A region of DNA with only cytosine bases present</label>
    <input name="data[Day][answer_id]" id="DayAnswerId21" value="21" type="radio">
    <label for="DayDayAnswerId21">A single piece of DNA with no function</label>
</div>

La question est la suivante : Pourquoi le for du label n'est pas le même que l'id du input ?

Merci d'avance,
Flourt.

5 réponses


ker0x
Réponse acceptée

J'ai eu le même problème, il s'agit d'un bug lié à la version 2.4.0 ou 2.4.1 de CakePHP. Passe en version 2.4.2 pour le résoudre ;) !

(cf Changelog)

Salut, si tu regardes bien le code est bon.
L'input se trouve avant le label. Le premier input est un input hidden qui sert pour le framework. Le deuxième input est relatif au premier label, le troisième input au deuxième label, ...

Comme le dit prbaron, tout est bon.

CakePHP génère ces ID, ces names et ces for en fonction de ce que tu lui demandes, mais les for sont bien différents des ID. Je viens de vérifier sur mes propres formulaires et j'ai la même chose que toi, mais ça fonctionne ! ;)

Digikube
Auteur

Bah lorsque qu'on clique sur le label ca ne "coche" pas le bouton radio ... alors que ça devrait avec le même ID.

Digikube
Auteur

Ca ca m'interesse plus :) merci je teste ça immédiatement !

Edit : Ca marche à la perfection merci !