Форма Symfony возвращает только поле токена

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

Для этого я создал класс FormType, используя FormBuilderInterface. Но когда я пытаюсь отобразить форму в шаблоне ветки, я всегда получаю только форму с вводом токена, но никаких других полей.

Мой код ниже:

Определение типа:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Length;

class VendorLeadType extends AbstractType{

/**
* @param FormBilderInterface $builder
* @param array $options
*/
public function buidForm(FormBuilderInterface $builder, array $options){

$builder
->add('email', EmailType::class, [
'constraints' => [
new Email(),
new Length(['max'=>'100'])
]
])
->add('name', TextType::class, [
'constraints' => [
new NotBlank(),
new Length(['max'=>'100'])
]
])
->add('phone', TextType::class, [
'constraints' => [
new NotBlank(),
new Length(['max'=>'100'])
]
])
;
}

}

контроллер:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

use AppBundle\Form\VendorLeadType;

class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$form = $this->createForm(VendorLeadType::class);
return $this->render('index.html.twig', [
'form' => $form->createView()
]);
}

}

Шаблон веточки

{% extends 'base.html.twig' %}

{% block body %}
{{ form(form) }}
{% endblock %}

Выходной HTML

<form name="vendor_lead" method="post">
<div id="vendor_lead">
<input type="hidden" id="vendor_lead__token" name="vendor_lead[_token]" value="...">
</div>
</form>

Есть идеи, что я делаю не так?

0

Решение

Во-первых, в вашем скрипте VendorLeadType есть опечатка. Вам нужно исправить написание `public function buildForm ‘.

Чтобы переменные формы пришли на ваш контроллер, вам нужно указать Symfony не ожидать, что какие-либо переменные формы будут сопоставлены с сущностью, добавив 'mapped' => false, по вашим параметрам:

    $builder
->add('email', EmailType::class, [
'mapped' => false,
'constraints' => [
new Email(),
new Length(['max'=>'100'])
]
])
->add('name', TextType::class, [
'mapped' => false,
'constraints' => [
new NotBlank(),
new Length(['max'=>'100'])
]
])
->add('phone', TextType::class, [
'mapped' => false,
'constraints' => [
new NotBlank(),
new Length(['max'=>'100'])
]
])
;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]