Как запросить данные из HTML-формы при использовании формы Symfony для кнопки отправки - PullRequest
0 голосов
/ 09 февраля 2019

Я использую гибрид форм Symfony только для кнопок отправки и отмены, где любые пользовательские данные отправляются через HTML.

Вот мой код контроллера, который получает запрос.Он извлекает информацию о том, была ли нажата кнопка save или нет, но он принимает значение NULL для $content

$form = $this->createForm(FormType::class)
        ->add('save', SubmitType::class, array('label'=> 'Save changes form',
            'attr' => ['class' => 'btn btn-primary']));
    $form->handleRequest($request);
    if ($form->get('save')->isClicked()){
        if ($form->isValid()){
            $content = $request->get('content');
            $announcementToCreate = new Announcement($content, $currentUser);
            $currentUser->getAnnouncements()->add($announcementToCreate);
            $this->getDoctrine()->getManager()->persist($announcementToCreate);
            $this->getDoctrine()->getManager()->flush();

Вот мой код ветки / html.Я использую модал для этой формы.Я смог получить желаемый результат, используя чистый HTML.

<div class="modal-body">
    {{ form(form) }}
    {{ form_start(form) }}
        <textarea class="form-control" id="announcementText" rows="5" name="contents"></textarea>
        {{ form_end(form) }}

1 Ответ

0 голосов
/ 09 февраля 2019
  1. Вам необходимо добавить свой текстовый ввод в форму:
$form = $this->createForm(FormType::class)
    ->add('content', TextareaType::class, [
        'label' => false,
        'attr' => [
            'rows' => 5,
            'class' => 'form-control'
        ]
    ])
    ->add('save', SubmitType::class, [
        'label'=> 'Save changes form',
        'attr' => ['class' => 'btn btn-primary']
    ]);

{{ form(form) }} используется для полной визуализации формы, вам не нужно использовать ее вместе с form_start / form_end.

Просто выполните полную визуализацию формы:

{{ form(form) }}

или визуализируйте каждую часть формы по отдельности:

{{ form_start(form) }}

  {{ form_row(form.content) }}
  {{ form_row(form.submit) }}

{{ form_end(form) }}
Вам не нужно проверять кнопку на «клик», просто проверьте, была ли отправлена ​​ваша форма:
...

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {

    // You can get your data directly from the form:   
    $content = $form->get('content')->getData();

    $announcementToCreate = new Announcement($content, $currentUser);
    $currentUser->getAnnouncements()->add($announcementToCreate);
    $this->getDoctrine()->getManager()->persist($announcementToCreate);
    $this->getDoctrine()->getManager()->flush();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...