2010-11-04 25 views
3

salut J'essaie d'ajouter une option désactivée à une boîte de sélection avec l'aide de formulaire J'utilise ce code pour générer un champ vide supplémentaire, mais je veux cela champ désactivé.ajouter désactivé (et sélectionné) option pour sélectionner l'élément avec l'aide de formulaire

echo $this->Form->input('User.usertype_id',array('type'=>'select', 'empty'=>'usertype'); 

ce produit:

<div class="input select"> 
    <label for="UserUsertypeId">Usertype</label> 
    <select name="data[User][usertype_id]" id="UserUsertypeId"> 
     <option value="">usertype</option> 
     <option value="1">athlete</option> 
     <option value="2">trainer</option> 
    </select> 
</div> 

mais je veux ceci:

<div class="input select"> 
    <label for="UserUsertypeId">Usertype</label> 
    <select name="data[User][usertype_id]" id="UserUsertypeId"> 
     <option value="" disabled="disabled" selected="selected">usertype</option> 
     <option value="1">athlete</option> 
     <option value="2">trainer</option> 
    </select> 
</div> 

Est-il possible de le faire simplement, ou devrais-je utiliser juste quelques js?

Répondre

9

Si vous connaissez les options à l'avance, vous pouvez créer la baie $options à utiliser dans le menu de sélection. Cela devrait vous donner exactement ce que vous voulez:

$options = array(
      array(
       'name' => 'usertype', 
       'value' => '', 
       'disabled' => TRUE, 
       'selected' => TRUE 
      ), 
      'athlete', 
      'trainer' 
      ); 

echo $this->Form->input('User.usertype_id', array('type' => 'select', 'options' => $options)); 

Ou peut-être cela pourrait fonctionner, mais je l'ai pas testé soit:

echo $ this-> form-> input ('utilisateur .usertype_id ', array (' type '=>' select ',' empty '=> array (' text '=>' usertype ',' selected '=> TRUE,' disabled '=> FALSE)));

+0

oeil à ma réponse ... – Weptunus

+0

fonctionne bien .. Merci. –

1

mhmm ressemble, il est impossible d'ajouter des codeblocks à un commentaire donc, les deux options ont généré:

<select name="data[User][usertype_id]" id="UserUsertypeId"> 
    <option value="text">usertype</option> 
    <option value="selected">1</option> 
    <option value="disabled"></option> 
    <option value="1">athlete</option> 
    <option value="2">trainer</option> 
</select> 

si cela ne fonctionne pas, mais je l'ai fait de cette façon:

echo $this->Form->input('User.usertype_id', array('type' => 'select', 'empty'=> array('text" disabled="disabled" selected="selected' => ''))); 

cela génère une option avec la valeur: ("désactivé = "désactivé" sélectionné =" choisi) de sorte qu'il devient:

... 
<option value="" disabled="disabled" selected="selected"></option> 
... 

Ceci est une solution temporaire, jusqu'à ce que je trouve quelque chose de mieux, les suggestions sont les bienvenues!

+0

Vérifiez à nouveau ma réponse. J'ai modifié la première option pour qu'elle fonctionne correctement. – stevelove

0

je fusionne la solution de Weptunus et stevelove.

Dans le contrôleur:

$examples = $this->Test->Examples->find('list'); 
$this->set('examples', $examples); 

Dans la vue

echo $this->Form->input('example_id', array('empty' => array(
     '' => array(
      'name' => __('Select an Example'), 
      'value' => '', 
      'disabled' => TRUE, 
      'selected' => TRUE 
     ) 
    )) 
);