Symfony 4 формы - Переменная форма не существует - PullRequest
0 голосов
/ 15 сентября 2018

Использование Symfony 4 для создания формы заявки в службу поддержки:

Создан маршрут и функции в контроллере страницы

/**
 * @Route("/support/ticket")
 */
public function ticket(){
    return $this->render('support/ticket/ticket.html.twig');
}
public function new(Request $request)
{
    // creates a Ticket and gives it some dummy data for this example
    $ticket = new Ticket();

    $form = $this->createFormBuilder($ticket)
        ->add('category', ChoiceType::class, array(
            'choices' => array(
                'ROMAC eHR' => 1,
                'ROMAC Website' => 2,
                'ROMAC Guide' => 3,
            )
        ))
        ->add('comment', TextareaType::class)
        ->add('save', SubmitType::class, array('label' => 'Submit Ticket'))
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        // $form->getData() holds the submitted values
        // but, the original `$task` variable has also been updated
        $ticket = $form->getData();

        // ... perform some action, such as saving the task to the database
        // for example, if Ticket is a Doctrine entity, save it!
        // $entityManager = $this->getDoctrine()->getManager();
        // $entityManager->persist($task);
        // $entityManager->flush();

        return $this->redirectToRoute('ticket_success');
    }

    return $this->render('support/ticket/ticket.html.twig', array(
        'form' => $form->createView(),
    ));
}

А затем отрисовать форму в шаблоне веточки:

        {{ form_start(form) }}
        {{ form_errors(form) }}

        {{ form_row(form.category) }}
        {{ form_row(form.comment) }}
        {{ form_end(form) }}

Когда я загружаю страницу, я получаю сообщение об ошибке Symfony о том, что «Переменная форма не существует».

Я следовал документации https://symfony.com/doc/current/forms.html. Где / как я могу найти проблему?

1 Ответ

0 голосов
/ 15 сентября 2018

Я предполагаю, что вы получаете эту ошибку при доступе к "/ support / ticket"

В этой функции отсутствует переменная "form"

public function ticket(){
    return $this->render('support/ticket/ticket.html.twig');
}

Я предложу обернуть ваш код в шаблон веточки в блок "если"

{% if form is defined %}
    {{ form_start(form) }}
    {{ form_errors(form) }}

    {{ form_row(form.category) }}
    {{ form_row(form.comment) }}
    {{ form_end(form) }}
{% endif %}

Или вам нужно соответствующим образом настроить функции вашего контроллера

...