Ich bin mit Symfony 1.2 und mit dem Objekt Helper, um einige inline editierbare Felder außerhalb eines Formulars zu erstellen. Da es keine Symfony- oder Scriptalicious-Abkürzung gibt, um ein Inline-Edit-Tag für Multiple-Choice-Auswahlfelder zu erstellen (ähnlich wie input_in_place_editor_tag oder Ajax.InPlaceCollectionEditor), verwende ich object_select_tag mit der Option multiple auf true, um ein Auswahlfeld wie folgt zu erstellen:Wählen Sie mehrere Optionen standardmäßig mit object_select_tag
<?php
echo object_select_tag($user->getsfGuardPermissions(), 'getId', array (
'include_blank' => false,
'related_class' => 'sfGuardPermission',
'peer_method' => 'doSelect',
'text_method' => '__toString',
'control_name' => 'user_customer_permissions_'.$user_customer->getId(),
'multiple' => true
));
?>
Ich werde dann observe_field aufrufen, um das Objekt via Ajax zu aktualisieren, wenn das Formular geändert wird. Jedoch
Das Problem ist, dass während $ user-> getsfGuardPermissions() ein Array von sfGuardPermission-Objekte zurückgibt. Sie sind nicht standardmäßig ausgewählt.
Nach einigen Tests habe ich festgestellt, dass die richtige Option ausgewählt ist, wenn Sie nur ein sfGuardPermission-Objekt anstelle eines Arrays übergeben. Ist dies eine Einschränkung von Symfony oder gibt es eine andere Möglichkeit, dies zu tun? Es ist schwer zu glauben, dass Symfony die Option "mehrere" enthalten würde, wenn sie nicht standardmäßig mehrere Optionen auswählen könnten.
Betrachtet man ObjectHelper.php ist offensichtlich, dass die Funktion kein Array erwartet. Wie wähle ich standardmäßig mehrere Objekte aus?