私は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オブジェクトを1つだけ渡すと、適切なオプションが選択されることがわかりました。これはsymfonyの制限ですか、これを行う方法が異なりますか?デフォルトで複数のオプションを選択できない場合、symfonyに 'multiple'オプションが含まれていると考えるのは難しいです。
ObjectHelper.phpを見ると、関数が配列を期待していないことが明らかです。どのようにデフォルトで複数のオブジェクトを選択するのですか?