Symfony: Dropdown Felder in Formularen zur Laufzeit ändern

Mit diesem Code kann man in der Action die Optionen der Selectbox anpassen. In der Formular Klasse (in der configure() methode) müssen bereits choices definiert sein, sonst gibt es einen Fehler, wenn das Form initialisiert wird.

[...]
// Formular initialisieren
$this->form = new addtaskForm();

// Das entsprechende Widget Schema anpassen
$widgetSchema = $this->form->getWidgetSchema();
$widgetSchema['task']->setOption('choices', array('0' => 'arbeiten', 1 => 'spielen', 2 => 'schlafen'));
// Standardauswahl setzen
$this->form->setDefault('task', 1);
[...]

Eine alternative Vorgehensweise wäre diese:

In der Formular Klasse:

[...]
public function configure()
{
    $this->widgetSchema['task']  = new sfWidgetFormSelect(array('choices' => $this->getDefault("task_items")));
[...]

In der Action:

$versionItems = array('0' => 'arbeiten', 1 => 'spielen', 2 => 'schlafen');
$this->form = new addtaskForm(array('task_items' => $versionItems));
$this->form->setDefault('task', 1);

(Version: Symfony 1.2)

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn Sie ein Gravatar-Konto haben, wird dieses verwendet, um Ihr Benutzerbild darzustellen.
CAPTCHA
Diese Frage hat den Zweck zu testen, ob man ein menschlicher Benutzer ist und um automatisierten Spam vorzubeugen.