Symfony 4.4 : 如何在Bootstrap模式中嵌入表单?

问题描述 投票:0回答:1

我需要在一个弹出式窗口中嵌入一个表单,我创建了一个formType,一个控制器和一个TWIG视图,其中包含了整个页面和弹出式窗口。

我创建了一个formType,一个控制器和一个TWIG视图,其中包含了整个页面和弹出窗体。

我在弹出式中映射了我的表单,一切都显示得很好,但当我点击提交按钮时,什么都没有发生。似乎当嵌入到弹出式表单中时,无法检测到提交按钮。

这是我的表单。

namespace App\Form;

    class MessageType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('text', TextareaType::class, [
                        'attr' =>[
                            'class'=>'with-border',
                            'cols'=> '10',
                            'placeholder'=> 'Message',
                            'name'=> 'textarea',
                        ],
                        ])
                ->add('save', SubmitType::class, [
                        'attr' =>['class'=>'button margin-top-35 full-width button-sliding-icon ripple-effect'],
                ])
            ;
        }

        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Message::class,
            ]);
        }
    }

这是控制器中与表单相关的部分。

namespace App\Controller;

class FreelancerprofileController extends AbstractController
{
/**
* @Route("/freelancer/profile/{id}", name="freelancerprofile",requirements={"id" = "\d+"})
*/
public function index($id, Request $request)
{ 
$message = new Message();
$form = $this->createForm(MessageType::class, $message);

    if ($form->isSubmitted() && $form->isValid())
    {
        $user = $this->getUser();
        $receiver = $freelancer->getUser();
        $messagetext = $form['message']->getData();
        $message->setUser($user);
        $message->setReceiver($receiver);
        $message->setText($messagetext);
        $message->setCreationdate(new \DateTime('now'));

        return $this->render('freelancer/profile.html.twig', array(
            //'freelancers' => $freelancers,
        ));
    }

    return $this->render('freelancer/profile.html.twig', [
        'message' => $form->createView(),
    ]);
}
}

这是TWIG视图中包含的模式。

<!-- Message Popup
    ================================================== -->
    <div id="small-dialog" class="zoom-anim-dialog mfp-hide dialog-with-tabs">

        <!--Tabs -->
        <div class="sign-in-form">

            <ul class="popup-tabs-nav">
                <li><a href="#tab">Contact</a></li>
            </ul>

            <div class="popup-tabs-container">

                <!-- Tab -->
                <div class="popup-tab-content" id="tab">

                    <!-- Welcome Text -->
                    <div class="welcome-text">
                        <h3>Send message</h3>
                    </div>
                    {{ form_start(message) }}
                    <!-- Form -->
                    <form method="post">
                        {{ form_widget(message.text) }}

                    </form>
                    <!-- Button -->
                    {{ form_widget(message.save) }}

                    {{ form_end(message) }}

                </div>

            </div>

        </div>
    </div>
</div>

<!-- Message Popup / End -->
symfony popup symfony4 symfony-forms
1个回答
0
投票

根据 文件 你只需要使用树枝标签。

{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
    {{ form_widget(form) }}
{{ form_end(form) }}

没有 form 标签

© www.soinside.com 2019 - 2024. All rights reserved.