Object_select_tag kullanarak varsayılan olarak birden fazla seçenek seçmek

1 Cevap php

Ben Symfony 1.2 çalıştıran ve bir formun dışında bazı satır içi düzenlenebilir alanları oluşturmak için nesne yardımcısı kullanan duyuyorum. (Çok input_in_place_editor_tag veya Ajax.InPlaceCollectionEditor) gibi çoklu seçmeli seçme kutuları için bir satır içi düzenleme etiketi oluşturmak için hiçbir symfony veya scriptalicious kısa kesilmiş olduğundan, ben bu yüzden böyle bir seçme kutusu oluşturmak için true birden fazla seçenek seti ile object_select_tag kullanıyorum:

<?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
));
?>

Sonra formu değiştiğinde Ajax ile nesneyi güncellemek için observe_field arayacak. Ancak

Sorun $ user-> getsfGuardPermissions while () sfGuardPermission nesneleri dizisini döndürür olmasıdır. Bunlar varsayılan olarak seçili değildir.

Birkaç denemeden sonra, ben bunu bir dizi yerine tek sfGuardPermission nesne geçmesi halinde, uygun seçeneği seçili olduğundan bulundu. Bu Symfony bir sınırlama veya bunu yapmanın farklı bir yolu var mı? Onlar varsayılan olarak birden fazla seçenek seçmek için izin vermedi eğer symfony 'birden çok' seçeneği yer alacak inanmak zor.

ObjectHelper.php baktığımızda bu fonksiyonu bir dizi bekliyor olmadığı açıktır. Nasıl varsayılan birden fazla nesneleri seçerim?

1 Cevap

object___select ___ etiketi () seçtiğiniz istediğiniz nesne değerleri karşılık gelen bir tamsayı dizisi kabul eder. Örneğin:

<?php
  echo object_select_tag(array(4, 5), 'getId', array (
 'include_blank' => false,
 'related_class' => 'sfGuardPermission',
 'peer_method' => 'doSelect',
 'text_method' => '__toString',
 'control_name' => 'user_customer_permissions_'.$user_customer->getId(),
     'multiple' => true
));
  ?>

Varsayılan değerleri 4 ve 5 seçecektir. Dokümantasyon $ nesne object select tag (symfony API) gibi ilk parametre listeler gibi bu ideal değildir. Yani bu geçici bir çözüm olarak kabul edilebilir sanırım. İdeal işlevi birden bayrağı true olarak ayarlanmış $ nesne parametresi için nesneleri dizisi kabul ediyorum. Bu, diğer yardımcı fonksiyonları ile tutarlı olacaktır.