खोज…
वाक्य - विन्यास
- $ फॉर्म = $ यह-> createForm (HomeType :: class, $ house, $ formOptions);
पैरामीटर
पैरामीटर | परिभाषा |
---|---|
HouseholdType :: वर्ग | घरेलू इकाई के लिए कस्टम प्रपत्र वर्ग |
$ घर | घरेलू इकाई का एक उदाहरण (आमतौर पर $household = new Household(); द्वारा बनाया गया $household = new Household(); ) |
$ formOptions | उपयोगकर्ता-परिभाषित विकल्पों की एक सरणी को प्रपत्र वर्ग में पारित किया जाना है, जैसे, $formOptions = array('foo' => 'bar'); |
टिप्पणियों
जब आप एक प्रपत्र वर्ग बनाते हैं तो प्रपत्र फ़ील्ड public function buildForm(FormBuilderInterface $builder, array $options) {...}
फ़ंक्शन में जोड़े जाते हैं। $options
पैरामीटर में attr
और label
जैसे डिफ़ॉल्ट विकल्पों का एक सेट शामिल है। अपने कस्टम विकल्पों को फॉर्म वर्ग में उपलब्ध होने में सक्षम करने के लिए विकल्पों को configureOptions(OptionsResolver $resolver)
करने की आवश्यकता होती है configureOptions(OptionsResolver $resolver)
किया जाना चाहिए configureOptions(OptionsResolver $resolver)
तो हमारे वास्तविक दुनिया उदाहरण के लिए:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Household',
'disabledOptions' => [],
));
}
एक घरेलू नियंत्रक से वास्तविक दुनिया का उदाहरण
पृष्ठभूमि: घरेलू इकाई में विकल्पों का एक सेट शामिल है, जिनमें से प्रत्येक एक इकाई है जो एक व्यवस्थापक बैकएंड में प्रबंधित की जाती है। प्रत्येक विकल्प में बूलियन enabled
ध्वज होता है। यदि पहले से सक्षम विकल्प को अक्षम कर दिया गया है, तो इसे बाद के घरेलू संपादन में बनाए रखने की आवश्यकता होगी, लेकिन इसे संपादित नहीं किया जा सकता है। इसे पूरा करने के लिए प्रपत्र वर्ग में फ़ील्ड परिभाषा फ़ील्ड को एक अक्षम विकल्प फ़ील्ड के रूप में प्रदर्शित करेगी यदि विकल्प enabled = false
(लेकिन जारी है क्योंकि सबमिट बटन एक जावास्क्रिप्ट को चलाता है जो disabled
विशेषता को हटाता है।) फ़ील्ड परिभाषा भी अक्षम को रोकती है। प्रदर्शित होने से।
फ़ार्म क्लास को एक दी गई घरेलू इकाई के लिए यह जानना आवश्यक है कि उसके कौन से विकल्प अक्षम किए गए हैं। एक सेवा को परिभाषित किया गया है जो विकल्प संस्थाओं के नामों की एक सरणी देता है जो अक्षम हो गए हैं। वह सरणी $disabledOptions
।
$formOptions = [
'disabledOptions' => $disabledOptions,
];
$form = $this->createForm(HouseholdType::class, $household, $formOptions);
कस्टम विकल्प का उपयोग फॉर्म क्लास में कैसे किया जाता है
->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');
}
},
))
आवास इकाई
/**
* 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;
}
}