Symfony 2.0'da, formda bire bir ilişkiyi kullanarak bir açılır liste nasıl oluşturulur? İyi örnek verebilir misiniz lütfen?Formda bire bir ilişki?
cevap
Sorunuzu, anladığım şekilde yanıtlamaya çalışacağım. Tek bir University
nesnesine bağlı bir Faculty
nesnesinin olduğunu varsayalım. Yani bir fakülteyi oluşturmak veya düzenlemek için kullanılan formda, veritabanındaki tüm üniversitenin birleşik kutusunu gösteriyorum ve kullanıcı aralarından birini seçiyor. Tam olarak bunu yapan bir özel Symfony alan türü vardır: varlık türü.
// Application\AcmeBundle\Form\Type\FacultyType
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name');
$builder->add('university', 'entity', array(
// The class of the entity used as a combo box item
'class' => 'AcmeBundle:University',
// The property of the entity displaying the entity as text
'property' => 'name',
// The query builder used to populate the combo box, accepts
// a QueryBuilder object or a \Closure like below
'query_builder' => function(EntityRepository $repository) {
// This will return a query builder selecting all universities
return $repository->createQueryBuilder('u');
}
));
}
Not: varlık alan türü için ayarlanabilir diğer özellikler vardır, seni almaya davet Aşağıda ben fakülte formunu oluşturmak için kullanılan benim FacultyType
nesne kullanmak buildForm
yöntemin kodudur Daha fazla bilgi için bu page bir göz atın.
Oluşturulduğunda, bu veritabanında belirlediğim tüm üniversitelerle birleşik giriş kutusu gösterecektir. Kullanıcı formu kaydettiğinde, üniversite seçiciye formuna bağlı fakülte nesnesine atanmıştır. Bir açılır kutu yerine büyük olasılıkla bir açılır liste oluşturabilirsiniz. Birden fazla varlık seçmeniz gerekiyorsa, alan tipi öğenin 'multiple'
seçeneği kullanışlı olabilir.
Bu söylenen örnekte, gösterdiğim örnek, bire-bir ilişki değil, daha çok Faculty
nesnesi için Çok-bire ve University
nesnesi için bire-birdir. Birebir bir ilişki, bir University
'un benzersiz bir Address
olduğu bir ilişki gibi bir şey olacaktır. Bu durumda, bir açılan kutu, üniversite yalnızca bir adrese sahip olabileceğinden, bir alt formun daha uygun olacağı için yararlı olmaz. Çok sayıda adres varsa, o zaman üniversite ile fakülteleri arasındaki ilişki gibi bire-bir ilişki haline gelir.
Sorunuzun doğru bir şekilde yanıtlanıp karşılanmayacağından emin değilsiniz, ancak umarım sizi nihai bir çözüme götürür.
Selamlar, Matt
Sen Symfony2'deki varlık alanı türünü kullanmak gerekir. İyi bir örnek http://symfony.com/doc/current/reference/forms/types/entity.html
adresinde bulunabilir. Ne istediğinize dair daha fazla bilgi verebilir misiniz? – Riley
Birebir ilişkili tablodan combobox oluşturmak istiyorum. – Zeck