Как исправить «Переменная не существует» при использовании FormBuilder? - PullRequest
0 голосов
/ 25 января 2019

Я работал с несколькими учебниками по формам на странице Symfony (особенно Как встроить коллекцию форм , Как использовать форму без класса данных & Поле CollectionType ).

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

Но я получаю сообщение об ошибке Twig_Runtime_Error: «Переменная« lead_partners »не существует».

Моя веточка:

{% block content %}

<div>

    {{ form_start(form) }}
    {% for partner in lead_partners %}
        {{ form_row(partner.name) }}
    {% endfor %}
    {{ form_end(form) }}

</div>

{% endblock content %}

Код моего контроллера:

public function overview(Request $request, \App\Utility\LeadPartnerLoader $LeadPartnerLoader)
{
    $leadPartnerList = $LeadPartnerLoader->loadAll();

    $form = $this->createFormBuilder($leadPartnerList)
        ->add('lead_partners', CollectionType::class, [
            'entry_type' => LeadPartnerFormType::class,
        ])->getForm();

    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid())
    {
        $data = $form->getData();
    }

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

И тип формы (LeadPartnerFormType):

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

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('id', HiddenType::class)
        ->add('name', TextType::class);
}

$leadPartnerList относится к типу array.

Что я делаю неправильно / отсутствует здесь?

С уважением

1 Ответ

0 голосов
/ 28 января 2019

Кажется, ваше действие overview не возвращает переменную lead_partners, которую вы используете в своем шаблоне.

Вы можете попробовать сделать это

return $this->render(
    'lead_partner_overview2.html.twig',
    [
        'form' => $form->createView(),
        'lead_partners' =>  $leadPartnerList, // I gess that's the list you want to loop ?
    ]);
...