У меня есть класс пользовательских сущностей: namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\JoinColumn;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="clients")
*/
class Clients
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
* @Assert\NotBlank(
* groups={"registration"},
* message = "Il campo nome non può essere vuoto."
* )
*/
private $name;
Затем у меня есть тип ClientsType:
namespace AppBundle\Form;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class ClientsType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('name');
}
public function getName() {
return "Clients";
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Clients',
'validation_groups' => array('registration'),
));
}
}
И я мой контроллер:
if ($request->isMethod('POST')) {
$client = new Clients();
$form = $this->createForm(ClientsType::class, $client);
$form->handleRequest($request);
$data = $form->getData();
print_r($data);
if ($form->isValid()) {
echo "yes";
}
else{
echo "no";
}
die();
}
Я вижу, что есть простая форма html.
<input type="text" class="form-control" value="{{last_name}}" id="name" name="name" placeholder="Nome">
Проблема в том, что если я отправляю или нет "имя", я всегда получаю "нет"...
Спасибо... Фабио.
Я думаю, что форма не проверена правильно, потому что входное имя в шаблоне неверно, поэтому форма не заполнена почтовыми данными. Попробуйте изменить name="name"
на name="Clients[name]"
или передать форму в шаблон $form->createView()
и вывести этот элемент как {{ form_widget(form.name) }}
foreach($form->getErrors(true) as $error) echo $error->getMessage()."<br/>\n";
после echo "no";
getErrors()
ошибках сообщает форма (используяgetErrors()
илиgetErrorsAsString()
объекта$form
)?