Symfony 4.4: Как встроить форму в модал Bootstrap? - PullRequest
0 голосов
/ 02 мая 2020

Мне нужно встроить форму во всплывающее окно.

Я создал formType, контроллер и вид TWIG, содержащий всю отображаемую страницу и всплывающую форму.

I отобразил мою форму во всплывающем окне, все хорошо отображается, но ничего не происходит, когда я нажимаю c на кнопку отправки. Кажется, что отправка не обнаруживается при внедрении во всплывающем окне.

Вот моя форма:

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 -->

1 Ответ

0 голосов
/ 02 мая 2020

Согласно документации вы просто используете тег ветки:

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

без form тега

...