수색…
통사론
- $ form = $ this-> createForm (HouseholdType :: class, $ household, $ formOptions);
매개 변수
매개 변수 | 정의 |
---|---|
HouseholdType :: class | 가정 개체의 사용자 지정 양식 클래스 |
가정 | 세대 개체의 인스턴스 (일반적으로 $household = new Household(); 의해 생성됨) |
$ formOptions | 양식 클래스에 전달할 사용자 정의 옵션 $formOptions = array('foo' => 'bar'); 예 : $formOptions = array('foo' => 'bar'); |
비고
양식 클래스를 작성할 때 양식 필드는 public function buildForm(FormBuilderInterface $builder, array $options) {...}
함수에 추가됩니다. $options
매개 변수에는 attr
및 label
과 같은 기본 옵션 집합이 포함됩니다. 양식 클래스에서 사용자 정의 옵션을 사용하려면 configureOptions(OptionsResolver $resolver)
에서 옵션을 초기화해야합니다.
그래서 우리의 실제 예를 보자.
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Household',
'disabledOptions' => [],
));
}
가정용 컨트롤러의 실례
배경 : 가정용 엔티티는 일련의 옵션을 포함하며 각 옵션은 관리자 백엔드에서 관리되는 엔티티입니다. 각 옵션에는 부울 enabled
플래그가 있습니다. 이전에 활성화 된 옵션을 사용 안 함으로 설정하면 나중에 가정용 편집에서 유지해야하지만 편집 할 수는 없습니다. 이를 수행하기 위해 양식 클래스의 필드 정의는 옵션이 enabled = false
경우 비활성화 된 선택 필드로 필드를 표시합니다 (제출 버튼이 disabled
속성을 제거하는 javascript를 트리거하므로 유지됩니다). 필드 정의는 비활성화 된 옵션 표시되지 않습니다.
그런 다음 양식 클래스는 해당 가정용 엔티티에 대해 옵션 중 어떤 것이 비활성화되었는지 알아야합니다. 비활성화 된 옵션 엔터티의 이름 배열을 반환하는 서비스가 정의되었습니다. 그 배열은 $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;
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow