OK, вам нужно использовать EventListener для формы. Дополнительную информацию см. В документации.
Это позволит вам предварительно установленные данные формы
Пример()
/* Форма */
namespace Company\YourBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityRepository;
use Company\YourBundle\Form\EventListener\YourEventListener;
class FormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventSubscriber(new YourEventListener($builder->getFormFactory()));
}
public function getName() {
return 'company_formtype';
}
}
/* Event Listener (Вы можете потребовать, чтобы передать больше данных в этот класс из вашей формы, так как у меня мало информации, чтобы помочь вам) */
namespace Company\YourBundle\Form\EventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class ActivityListener implements EventSubscriberInterface {
private $form;
public function __construct($form) {
$this->form = $form;
}
public static function getSubscribedEvents() {
return array(
FormEvents::PRE_SET_DATA => 'onPreSetData',
);
}
public function onPreSetData(FormEvent $e) {
$data = $e->getData();
$form = $e->getForm();
if ($form->has('district')) {
$form->remove('district');
}
$form->add($this->form->createNamed('district', 'entity', null, array(
'class' => 'AdminBundle:Districts',
'query_builder' => function(EntityRepository $repository) {
return $repository->createQueryBuilder('c')
->where('c.status =:status')
->setparameter('status','1')},
'property' => 'districtName',
'preferred_choices' => $data['id'] ? /** in edit mode set the preferred **/ ? null,
'multiple' => TRUE,
'expanded' => TRUE,
'required' => true,
));
}
}
Не уверен, что я вполне понимаю ваши достижения п. Вы хотите определить больше своих районов как предпочтительные (а не только выбранные в данный момент, как в вашем примере), чтобы они попали в верхнюю часть списка? – frumious
да хотите проверить больше районов – Rakhitha
Хорошо, я до сих пор не понимаю, извините! Я надеюсь, что ответ Мэтью Томаса даст вам то, что вы хотите (он описывает, как сделать определенные опции «предпочтительными», т. Е. Переместить их в начало списка, только в режиме редактирования (хотя документы Symfony предлагают, что 'preferred_choices' не является действительно для флажков, как здесь)). Если вы хотите что-то еще, то, может быть, вы можете отредактировать свой вопрос, чтобы включить примеры того, что вы получаете в настоящее время, и что вы хотите получить вместо этого? – frumious