我正在運行Symfony 1.2並利用對象幫助程序在表單外創建一些內聯可編輯字段。因爲沒有symfony或scriptalicious捷徑來爲多選擇框(與input_in_place_editor_tag或Ajax.InPlaceCollectionEditor類似)創建內聯編輯標記,所以我使用object_select_tag並將multiple選項設置爲true來創建如下所示的選擇框:默認情況下使用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
));
?>
然後,當窗體改變時,我將調用observe_field通過Ajax更新對象。然而,
問題是,雖然$ user-> getsfGuardPermissions()返回一個sfGuardPermission對象的數組。它們不是默認選中的。
經過一些測試後,我發現如果只傳遞一個sfGuardPermission對象而不是數組,則會選擇正確的選項。這是Symfony的限制還是有不同的方式?很難相信,如果symfony不允許你默認選擇多個選項,那麼symfony會包含'multiple'選項。
看着ObjectHelper.php,很明顯該函數並不期待數組。如何默認選擇多個對象?