entity
양식 유형을 사용하여 양식에 Position
엔티티 목록을 제공합니다. 필자는 더 자주 재사용 할 수 있도록 사용자 정의 양식 유형을 만들기로 결정한만큼 자주 (각 사용자가 동일한 "설정"코드를 사용하여) 충분히 사용합니다. Symfony2 : 맞춤 양식 유형의 동적 기본값은 무엇입니까?
class PositionType extends AbstractType
{
private $om;
public function __construct(ObjectManager $om, $mode)
{
$this->om = $om;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
// I need to pass "mode" as an option when building the form.
$mode = ???
$query_builder = function (EntityRepository $em) use ($mode) {
// Limit the positions returned based on the editing mode
return $em
->createQueryBuilder('Position')
->orderBy('Position.name')
->leftJoin('Position.type', 'Type')
->andWhere('Type.id IN (:ids)')
->setParameter('ids', Type::typesForMode($mode))
;
};
$resolver
->setRequired(array('mode'))
->setDefaults(array(
'label' => 'Position',
'class' => 'AcmeBundle:Position',
'property' => 'name',
'query_builder' => $query_builder,
'empty_value' => '',
'empty_data' => null,
'constraints' => array(
new NotBlank(),
),
))
;
}
public function getParent()
{
return 'entity';
}
public function getName()
{
return 'position';
}
}
중요하지 않습니다 쿼리 빌더의 세부 사항에 대해 걱정하지 마십시오
여기에 현재 양식 유형입니다. 문제가되는 부분은 쿼리 작성기에서 양식 유형 옵션을 사용하려고하는 것입니다.
어떻게하면됩니까? 문제는 $mode
(쿼리 작성기를 변경하기 위해 전달하려는 옵션)을 setDefaultOptions
에 사용할 수 없다는 것입니다.
buildForm
에서 쿼리 작성기를 설정하는 방법을 찾기 시작했으나이를 수행 할 수 있는지 잘 모르겠습니다.
완벽하고 정확하게 필요한 것. 감사. – Brian
엔티티 관리자를 전달하는 대신, 원래 호출 된 함수를 원래대로 반환합니다.이 함수는 Symfony – Brian
에서 관리자에게 전달됩니다. 물론 환영합니다.) –