En-til-en forening i skjemaet?

stemmer
6

I symfony 2.0, hvordan du oppretter en rullegardinliste ved hjelp av en-til-en forening i skjemaet? Kan dere sette godt eksempel please?

Publisert på 11/05/2011 klokken 14:01
kilden bruker
På andre språk...                            


2 svar

stemmer
11

Jeg vil prøve å svare på spørsmålet ditt slik jeg forstår det. La oss si at jeg har et Facultyobjekt bundet til en enkelt Universitygjenstand. Så i den form som brukes til å opprette eller redigere et fakultet, viser jeg en kombinasjonsboks av alle universitet i databasen og brukeren velge en blant dem. Det er en spesiell Symfony felttype som gjør akkurat dette: foretaket type. Nedenfor er koden for buildFormmetoden som jeg bruker i min FacultyTypeobjekt brukt til å lage fakultetet skjemaet:

// 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');
        }
    ));
}

Merk: Det er andre egenskaper som kan stilles for foretaket felttype, inviterer jeg deg å ta en titt på denne siden for mer informasjon om det.

Gjengitt, vil dette vise en kombinasjonsboks med alle universitetene jeg har satt i databasen. Når brukeren lagre skjemaet, valgte universitetet er tildelt fakultetet objektet bundet til skjemaet via en setter. Du kan sikkert gjøre en drop-down liste i stedet for en kombinasjonsboks. Hvis du trenger å velge flere enheter, det 'multiple'kan valget av feltet typen enhet være nyttig.

Dette blir sagt, det eksempelet jeg viste ikke en One-to-One forhold, men heller en mange-til-en for Facultyobjektet og en-til-mange for Universityobjektet. A One-to-One forhold ville være noe mer som en relasjon der en Universityhar en unik Address. I dette tilfellet ville en kombinasjonsboks ikke være nyttig siden universitetet kan bare ha en adresse slik at en sub-form ville være mer hensiktsmessig. Hvis den har mange adresser, så det blir en en-til-mange forhold som forholdet mellom universitetet og dets fakulteter.

Ikke sikker på om dette vil svare på spørsmålet ditt riktig, men jeg håper det vil lede deg til en endelig løsning.

Hilsen, Matt

Svarte 12/05/2011 kl. 02:31
kilden bruker

stemmer
1

Du må bruke enheten felttype i Symfony2. Et godt eksempel er funnet på http://symfony.com/doc/current/reference/forms/types/entity.html

Svarte 10/10/2013 kl. 14:51
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more