【问题标题】:How to use form_widget in twig with FormBuilderInterface如何在带有 FormBuilderInterface 的树枝中使用 form_widget
【发布时间】:2019-04-18 21:06:17
【问题描述】:

在 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'
           ]
        ]);

任何建议如何解决这个问题或我想念什么?

【问题讨论】:

    标签: twig symfony4


    【解决方案1】:

    这是我学会使用 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' ])
        }
    

    以及对应的twig-template文件:

    文件: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>
    

    【讨论】:

    • form_row 或 form_widget 没有区别,没有任何东西输出输入字段。这可能是什么原因?
    • 诡异的是,如果我制作 form_label(form.firstname) 它会输出我在构建器中配置的标签 ...
    • 已解决 - 我在模板中的 form_widget 之前使用了 {{form(form)}},但它不起作用。删除表单(表单)后它可以工作!
    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 2019-10-26
    • 2015-04-22
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多