Zoeken…


Syntaxis

  • $ form = $ this-> createForm (HouseholdType :: class, $ huishouden, $ formOptions);

parameters

Parameter Definitie
HouseholdType :: klasse aangepaste formulierklasse voor de entiteit Huishouden
$ huishouden een exemplaar van de entiteit Huishouden (meestal gemaakt door $household = new Household(); )
$ formOptions een reeks door de gebruiker gedefinieerde opties die aan de formulierklasse moet worden doorgegeven, bijvoorbeeld $formOptions = array('foo' => 'bar');

Opmerkingen

Wanneer u een formulierklasse maakt, worden de formuliervelden toegevoegd aan de public function buildForm(FormBuilderInterface $builder, array $options) {...} . De parameter $options bevat een set standaardopties zoals attr en label . Om ervoor te zorgen dat uw aangepaste opties beschikbaar zijn in de formulierklasse, moeten de opties worden geïnitialiseerd in configureOptions(OptionsResolver $resolver)

Dus voor ons echte voorbeeld:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Household',
        'disabledOptions' => [],
    ));
}

Een echt voorbeeld uit een huishoudelijke controller

Achtergrond: de entiteit Huishouden omvat een set opties, die elk een entiteit zijn die wordt beheerd in een backend voor beheerders. Elke optie heeft een boolean enabled vlag. Als een eerder ingeschakelde optie is uitgeschakeld, moet deze in latere huishoudelijke bewerkingen worden bewaard, maar kan deze niet worden verwijderd. Om dit te bereiken zal de velddefinitie in de formulierklasse het veld weergeven als een uitgeschakeld keuzeveld als de optie is enabled = false (maar blijft bestaan omdat de verzendknop een JavaScript enabled = false dat het disabled kenmerk verwijdert.) De velddefinitie voorkomt ook uitgeschakelde opties wordt weergegeven.

De formulierklasse moet dan voor een bepaalde entiteit van het huishouden weten welke van zijn opties zijn uitgeschakeld. Er is een service gedefinieerd die een array met namen van optie-entiteiten retourneert die zijn uitgeschakeld. Die array is $disabledOptions .

    $formOptions = [
        'disabledOptions' => $disabledOptions,
        ];
    $form = $this->createForm(HouseholdType::class, $household, $formOptions);

Hoe de aangepaste opties worden gebruikt in de formulierklasse

        ->add('housing', EntityType::class,
            array(
            'class' => 'AppBundle:Housing',
            'choice_label' => 'housing',
            'placeholder' => '',
            'attr' => (in_array('Housing', $options['disabledOptions']) ? ['disabled' => 'disabled'] : []),
            'label' => 'Housing: ',
            'query_builder' => function (EntityRepository $er) use ($options) {
                if (false === in_array('Housing', $options['disabledOptions'])) {
                    return $er->createQueryBuilder('h')
                        ->orderBy('h.housing', 'ASC')
                        ->where('h.enabled=1');
                } else {
                    return $er->createQueryBuilder('h')
                        ->orderBy('h.housing', 'ASC');
                }
            },
        ))

Wonen entiteit

/**
 * Housing.
 *
 * @ORM\Table(name="housing")
 * @ORM\Entity
 */
class Housing
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var bool
     *
     * @ORM\Column(name="housing", type="string", nullable=false)
     * @Assert\NotBlank(message="Housing may not be blank")
     */
    protected $housing;

    /**
     * @var bool
     *
     * @ORM\Column(name="enabled", type="boolean", nullable=false)
     */
    protected $enabled;

    /**
     * Get id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set housing.
     *
     * @param int $housing
     *
     * @return housing
     */
    public function setHousing($housing)
    {
        $this->housing = $housing;

        return $this;
    }

    /**
     * Get housing.
     *
     * @return int
     */
    public function getHousing()
    {
        return $this->housing;
    }

    /**
     * Set enabled.
     *
     * @param int $enabled
     *
     * @return enabled
     */
    public function setEnabled($enabled)
    {
        $this->enabled = $enabled;

        return $this;
    }

    /**
     * Get enabled.
     *
     * @return int
     */
    public function getEnabled()
    {
        return $this->enabled;
    }

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\OneToMany(targetEntity="Household", mappedBy="housing")
     */
    protected $households;

    public function addHousehold(Household $household)
    {
        $this->households[] = $household;
    }

    public function getHouseholds()
    {
        return $this->households;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow