Persönlich Ich mag den Aufbau meiner Form in der Ansicht, anstatt Mischen der Präsentation in die Steuerung:
echo form_dropdown('events', $options, '', $firstItem);
es einfach machen. Aber das ist nur meine Meinung. Ich verstehe, dass ich Daten vorab laden muss, wenn es eine große Liste ist, aber ich glaube nicht, dass Sie wirklich das gesamte Formular nur für eine Dropdown-Liste erstellen müssen. Ich hatte das gleiche Problem und habe tatsächlich ein bisschen gegraben, um eine gute Lösung zu finden.
Um die Auswahlmöglichkeiten zu Validieren
Alles, was ich tat, eine benutzerdefinierte Methode in der Controller-Klasse liefern war, die Verarbeitung so etwas wie diese
function select_validate($selectValue)
{
// 'none' is the first option and the text says something like "-Choose one-"
if($selectValue == 'none')
{
$this->form_validation->set_message('select_validate', 'Please pick one.');
return false;
}
else // user picked something
{
return true;
}
}
In Ihrem Index() (oder je nachdem, welche Methode ist aussieht die Daten und das Laden der Ansicht), legen Sie Ihren Validierungscode für das Dropdown fest.
$this->form_validation->set_rules('select', 'Select', 'callback_select_validate');
Es ist zwingend notwendig, , dass Sie Ihre benutzerdefinierte Funktion mit "callback_" voranstellen.
Benutzerauswahl beibehalten Die Auswahlmöglichkeiten zu behalten, ist auch sehr einfach, wenn Sie verwenden, was CI Ihnen gibt. Sie müssen nur die Funktion set_select() für jede Option in der Auswahlliste verwenden.
Nehmen wir an, Sie haben eine Dropdown-Liste mit zwei Optionen, um es einfach zu machen. Das ist alles was du tust.
<select name="select">
<option value="none" <?php echo set_select('select', 'none', true);?> >- Select One -</option>
<option value="one" <?php echo set_select('select', 'one');?> >Option one</option>
<option value="two" <?php echo set_select('select', 'two');?> >Option two</option>
</select>
Was ist mit dieser Funktion schön ist, dass es eine Vorauswahl der erste „Dummy“ Option und dann, wenn der Benutzer eine Auswahl trifft aber nicht andere Validierungen, wird die Auswahl beibehalten wird und nach der Form vorselektiert wird veröffentlicht und fordert den Benutzer auf, die anderen Fehler zu korrigieren.
Auch dies kann nicht alle zufrieden stellen, aber es ist eine ziemlich einfache Lösung für die Drop-Down-Validierung mit CodeIgniter.
Das ist großartig - das hat gut funktioniert. Sie würden denken, dass es einen besseren Weg gibt, es zu tun? Außerdem, irgendwelche Ideen, wie Sie das Dropdown 'klebrig' machen? – Gaz
Meinst du, wenn das Formular gesendet wurde, aber etwas anderes nicht validiert wurde und du möchtest, dass das Drop-down denselben Wert hat? –
Yeh, das ist was ich meine. Re: Validierung - CI scheint eine gute Dokumentation für die grundlegende Eingabevalidierung zu haben, aber nicht so sehr für Dropdowns. Außerdem hätte ich gedacht, dass es einen hohen Prozentsatz von Dropdowns geben würde, die von Datenbankwerten bevölkert werden, und so würde set_select() das berücksichtigen, scheint nicht? – Gaz