2012-11-07 9 views
6

Ich bin ein wenig Mühe mit meiner Form und Radio-Buttons, die mit Eingabetext Ich tue dies:CodeIgniter form_radio mit set_value

<?php echo form_input('lastname', set_value('lastname'), 'id=lastname'); ?> 
<?php echo form_error('lastname'); ?> 

und wenn die Validierung läuft und dass Eingabefeld, das die ausgefüllten wird bekommen Wert zurück ... was ich suche ist eine Möglichkeit, diese

<tr><td><?php echo form_label('Gender: ', 'gender'); ?></td><td><?php echo form_label('Male', 'male') . form_radio('gender', 'M', '', 'id=male'); ?><br><?php echo form_label('Female', 'female') . form_radio('gender', 'F', '', 'id=female'); ?></td><td><?php echo form_error('gender'); ?></td></tr> 

mit Radio-Buttons zu tun, wie Sie mein sehen beide Optionsfelder Werte haben bereits F oder M ..... wie habe ich die Schaltfläche, die ausgewählt ist, zurückgegeben ausgewählt?

Antwort

8

aus dem Benutzerhandbuch: http://ellislab.com/codeigniter/user_guide/helpers/form_helper.html

form_radio()

Diese Funktion ist in jeder Hinsicht mit dem form_checkbox identisch ist() Funktion oben, außer, dass Sätze ist es als "Radio" Typ.

Lesen Also weiter:

form_checkbox()

Hier können Sie ein Kontrollkästchen Feld erzeugen. Einfaches Beispiel:

echo form_checkbox('newsletter', 'accept', TRUE); 

Würde produzieren:

<input type="checkbox" name="newsletter" value="accept" checked="checked" /> 

Der dritte Parameter enthält einen Booleschen WAHR/FALSCH, um zu bestimmen, ob das Kästchen aktiviert werden soll oder nicht.

Also in Ihrem Fall könnte es so etwas wie dieses:

// Pass boolean value to third param 
// Example: 
$radio_is_checked = $this->input->post('gender') === 'F'; 

echo form_radio('gender', 'F', $radio_is_checked, 'id=female'); 

Da set_radio() nur einen String checked="checked" zurückgibt, können Sie es in dem vierten Paramter zwängen konnte, wenn man wirklich wollte, aber es macht für einige hässliche suchen Code:

echo form_radio('gender', 'F', NULL, 'id="female" '.set_radio('gender', 'F')); 
1

Diese forsure funktioniert ....

<tr><td><?php echo form_label('Gender: ', 'gender'); ?></td><td><?php echo form_label('Male', 'male') . form_radio(array("name"=>"gender","id"=>"male","value"=>"M", 'checked'=>set_radio('gender', 'M', FALSE))); ?><br><?php echo form_label('Female', 'female') . form_radio(array("name"=>"gender","id"=>"female","value"=>"F", 'checked'=>set_radio('gender', 'F', FALSE))); ?></td><td><?php echo form_error('gender'); ?></td></tr> 

schrieb wie mein Radiobuttons so

<?php form_radio(array("name"=>"gender","id"=>"female","value"=>"F", 'checked'=>set_radio('gender', 'F', FALSE))); ?> 
+1

'checked' einen Booleschen akzeptiert, [während' set_radio' kehrt 'checked = "checked"'] (https: // Github .com/EllisLab/CodeIgniter/blob/entwickeln/system/helpers/form_helper.php # L808). –

+0

Der Grund dafür ist, dass CI nett genug ist, [deinen Fehler zu korrigieren] (https://github.com/EllisLab/CodeIgniter/blob/develop/system/helpers/form_helper.php#L389) und den Wert von 'zu konvertieren überprüft, zu einem legalen, mit irgendeinem anderen Attribut würde dies etwas wie "attr =" checked = "checked" "' ausgeben. –

-2
$_fldProyectoMostrar = array(
"id"  => "_FLDPROYDER", 
"name"  => "_FLDPROYDER" 
); 


<?php echo form_radio($_fldProyectoMostrar, "FALSE", set_radio("_FLDPROYDER", "FALSE", TRUE)); ?>NO 

<?php echo form_radio($_fldProyectoMostrar, "TRUE",  set_radio("_FLDPROYDER", "TRUE", FALSE)); ?>SI 

Donde el El Segundo Heldenmut del gesetzt Radio, debe ser = al String-Wert del form_radio

1

Das ist für mich gut funktioniert. Obwohl ich form_helper nicht verwendet habe, war dies viel einfacher. Jedes Gesicht Problem Eingang für Gender-Bereich zu nehmen :)

   <input id="gender" name="gender" type="radio" class="" <?php if($gender=='0') echo "checked='checked'"; ?> value="0" <?php echo $this->form_validation->set_radio('gender', 0); ?> /> 
       <label for="gender" class="">Male</label> 

       <input id="gender" name="gender" type="radio" class="" <?php if($gender=='1') echo "checked='checked'"; ?> value="1" <?php echo $this->form_validation->set_radio('gender', 1); ?> /> 
       <label for="gender" class="">Female</label> 

       <input id="gender" name="gender" type="radio" class="" <?php if($gender=='2') echo "checked='checked'"; ?> value="2" <?php echo $this->form_validation->set_radio('gender', 2); ?> /> 
       <label for="gender" class="">Others</label> 

Ich hoffe, es wird jemand helfen :)

4

Ich benutze Ternary Operator für diesen. Angenommen, Sie erhalten den Rückgabewert von "M" (männlich). Ich $ ausgewählten Variable zum Beispiel machen und davon ausgehen, dass es Wert von M. hat

<?php $selected = 'M'; ?> 
<tr><td> 
    <?php echo form_label('Gender: ', 'gender'); ?></td><td> 
    <?php echo form_label('Male', 'male') . form_radio(array('name' => 'gender', 'value' => 'M', 'checked' => ('M' == $selected) ? TRUE : FALSE, 'id' => 'male')); ?><br> 
    <?php echo form_label('Female', 'female') . form_radio(array('name' => 'gender', 'value' => 'F', 'checked' => ('F' == $selected) ? TRUE : FALSE, 'id' => 'female')); ?></td><td> 
    <?php echo form_error('gender'); ?> 
</td></tr>