Как использовать form_widget в ветке с FormBuilderInterface - PullRequest
0 голосов
/ 19 апреля 2019

При создании простой формы создания пользователя в Symfony с FormBuilderInterface и {{form (form)}} моя форма создается так, как я ее определил.Хотя мне нужно добавить настраиваемые поля выбора, мне нужно создать поле формы вручную.Для этого я попытался использовать, например, {{form_widget (form.firstname)}}, но поле ввода не создается.

 {{ form(form) }}

Работа с визуализированными полями ввода.


 {{ form_start(form) }}
     <div class="form-row">
         <div class="form-group col-md-6">
            {{ form_widget(form.firstname) }}
         </div>
         <div class="form-group col-md-6">
            {{ form_widget(form.lastname) }}
         </div>
     </div>
  {{ form_end(form) }}

без визуализации,Конфигурация:

$builder
    ->add('firstname', TextType::class, [
        'label' => '',
            'attr' => [
                'class' => 'form-control',
                'placeholder' => 'Vorname'
            ]
         ])
    ->add('lastname', TextType::class, [
        'label' => '',
           'attr' => [
                'class' => 'form-control',
                'placeholder' => 'Nachname'
           ]
        ]);

Любой совет, как решить эту проблему или что мне не хватает?

1 Ответ

0 голосов
/ 19 апреля 2019

Вот как я научился использовать интерфейс FormBuilderInterface (спасибо учебнику GRAFIKART!)

ФАЙЛ: src / Controller / Property.php

 class PropertyController extends AbstractController
 {   
  /**/
  public function __construct(PropertyRepository $repository, ObjectManager $em) {
        $this->repository = $repository; $this->em=$em;  }

 /**
 * @Route("/biens", name="property.index")
 * @return Response
 */
 public function index(PaginatorInterface $paginator, Request $request):Response
    {
        $search = new PropertySearch();
        $form = $this->createForm(PropertySearchType::class, $search);
        $form->handleRequest($request);

        $properties = $paginator->paginate($this->repository->findAllVisibleQuery($search),
         $request->query->getInt('page', 1), 9);

        return $this->render('property/index.html.twig', [
            'current_menu'=>'properties',
            'properties'=>$properties,
            'form' => $form->createView()
            ]);
 }

ФАЙЛ: src / Form / PropertySearchType.php

class PropertySearchType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('minSurface', IntegerType::class, [
                'required' =>false,
                'label' =>false,
                'attr'=>['placeholder' => 'Surface minmale']  
            ])
           ->add('maxPrice', IntegerType::class, [
                'required' =>false,
                'label' =>false,
                'attr'=>['placeholder' => 'Prix maximal']  
            ])
           ->add('pOptions', EntityType::class,[
               'required'=>false,
               'label'=>false,
                'class'=>POption::class,
                'choice_label'=>'name',
                'multiple'=>true     
            ] );
        //->add('submit', SubmitType::class, ['label' =>'Rechercher' ])
    }

И соответствующий файл шаблона ветки:

ФАЙЛ: src / templates / property / index.html.twig

 <div   class="container">
 {{ form_start(form) }}
  <div class='form-row'>
   <div class='col'> {{ form_row(form.minSurface) }} </div>
   <div class='col'> {{ form_row(form.maxPrice) }} </div>
   <div class='col'> {{ form_row(form.pOptions) }} </div>
   <div class='col'>
     <button class='btn btn-primary'> Rechercher </button>
  </div>
  </div><!-- end row -->

{{ form_end(form) }}
  </div>
...