我无法让我的表格生效或提交。 isValid()
返回false。使用PHP
,symfony2
使用实体 - anotations,使用var_dump( $form->getErrorsAsString() );
返回无错误。symfony2 isValid() returns false without errors
我的代码:
<?php
namespace Fishing\UsersBundle\Controller;
use AppBundle\Entity\Users;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class GetController extends Controller
{
public function indexAction(Request $request)
{
$users = new Users();
$form =$this->createFormBuilder($users)
->setMethod('POST')
->add('firstName', 'text')
->add('lastName', 'text')
->add('email', 'email')
->add('plainPassword','password')
->add('save', 'submit', array('label' => 'Create User'))
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// perform some action...
/*$em = $this->getDoctrine()->getManager();
$em->persist($users);
$em->flush();
*/
return new Response('isValid!');
} else {
var_dump( $form->getErrorsAsString() );
//die;
return new Response('notvalid');
}
return $this->render('default/userForm.html.twig', array(
'form' => $form->createView(),
));
}
}
我的实体:
<?php
// src/AppBundle/Entity/Users.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @UniqueEntity(fields="email", message="Email already taken")
*
*/
class Users
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @Assert\NotBlank()
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
* @Assert\NotBlank()
*/
protected $firstName;
/**
* @ORM\Column(type="string", length=100)
* @Assert\NotBlank()
*/
protected $lastName;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank()
* @Assert\Email()
*/
protected $email;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank()
* @Assert\Length(max = 4096)
*/
protected $plainPassword;
/**
* @ORM\Column(type="datetime", name="created_at")
* @ORM\GeneratedValue(strategy="AUTO")
* @Assert\NotBlank()
*/
protected $createdat;
/**
* @ORM\Column(type="datetime", name="updated_at")
* @ORM\GeneratedValue(strategy="AUTO")
* @Assert\NotBlank()
*/
protected $updatedat;
public function getFirstName()
{
return $this->firstName;
}
public function setFirstName($firstName)
{
$this->firstName = $firstName;
}
public function getLastName()
{
return $this->lastName;
}
public function setLastName($lastName)
{
$this->lastName = $lastName;
}
public function getEmail()
{
return $this->email;
}
public function setEmail($email)
{
$this->email = $email;
}
public function getPlainPassword()
{
return $this->plainPassword;
}
public function setPlainPassword($password)
{
$this->plainPassword = $password;
}
/**
* Set createdat
*
* @param \DateTime $createdat
* @return Users
*/
public function setCreatedat($createdat)
{
$this->createdat = $createdat;
return $this;
}
/**
* Get createdat
*
* @return \DateTime
*/
public function getCreatedat()
{
return $this->createdat;
}
/**
* Set updatedat
*
* @param \DateTime $updatedat
* @return Users
*/
public function setUpdatedat($updatedat)
{
$this->updatedat = $updatedat;
return $this;
}
/**
* Get updatedat
*
* @return \DateTime
*/
public function getUpdatedat()
{
return $this->updatedat;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
我的观点:
{% extends 'base.html.twig' %}
{% block title %}User Input{% endblock %}
{% block body %}
New User Input Form!
{{ form_start(form) }}
{{ form_widget(form) }}
<br>
{{ form_end(form) }}
{% endblock %}
答案 0 :(得分:0)
也许您可以考虑转储$form->getErrors()
。
function getErrorsAsString($level = 0) {
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0. Use (string) Form::getErrors(true, false) instead.', E_USER_DEPRECATED);
我的猜测是您可能需要将PHP错误级别设置为E_ALL。
答案 1 :(得分:0)
$formbuilder->setAction($this->generateUrl('testform'))