我的验证有问题,我的验证都没有。我遵循文档,放置正确的代码,但什么也没做。
<?php
namespace ProjectBundleEntityUser;
use DoctrineORMMapping as ORM;
use FOSUserBundleModelUser as BaseUser;
use GedmoMappingAnnotation as Gedmo;
use GedmoSoftDeleteableTraitsSoftDeleteableEntity;
use GedmoTimestampableTraitsTimestampableEntity;
use ProjectBundleEntityTraitsBlameableEntity;
use SymfonyComponentValidatorConstraints as Assert;
use SymfonyComponentValidatorContextExecutionContextInterface;
use DoctrineCommonCollectionsArrayCollection;
use SymfonyBridgeDoctrineValidatorConstraintsUniqueEntity;
/**
* @ORMEntity(repositoryClass="ProjectBundleRepositoryUserUserRepository")
* @GedmoSoftDeleteable(fieldName="deletedAt")
* @ORMEntity
* @ORMUniqueEntity("email")
* @ORMTable(name="user")
*/
class User extends BaseUser
{
use TimestampableEntity;
use SoftDeleteableEntity;
use BlameableEntity;
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @AssertNotBlank()
* @AssertLength(
* min = 2,
* max = 254,
* minMessage = "Votre nom d'utilisateut doit comporter au minimum {{ limit }} caractères.",
* maxMessage = "Votre nom d'utilisateut doit comporter au maximum {{ limit }} caractères."
* )
*
* @var string
*/
protected $username;
/**
* @AssertNotBlank()
* @AssertLength(
* min = 2,
* max = 254,
* minMessage = "Votre nom d'utilisateut doit comporter au minimum {{ limit }} caractères.",
* maxMessage = "Votre nom d'utilisateut doit comporter au maximum {{ limit }} caractères."
* )
*
* @var string
*/
protected $plainPassword;
/**
* @AssertNotBlank()
*
* @AssertEmail(
* message = "L'adresse mail '{{ value }}' n'est pas valide.",
* checkMX = true
* )
*
* @var string
*/
protected $email;
/**
* @var string
* @AssertNotBlank()
*
* @ORMColumn(name="lastname", type="string", length=100)
*/
private $lastname;
/**
* @var string
* @AssertNotBlank()
*
* @ORMColumn(name="firstname", type="string", length=100)
*/
private $firstname;
当然还有此错误(例如(:Integrity constraint violation: 1048 Column 'lastname' cannot be null
当我提交表格时。
在我的config.yml中我有: validation: { enable_annotations: true }
和我的控制器:
/**
* @Route("/new", name="admin_user_new")
* @Security("has_role('ROLE_USER')")
* @param Request $request
* @return SymfonyComponentHttpFoundationRedirectResponse|SymfonyComponentHttpFoundationResponse
*/
public function newAction(Request $request)
{
$entity = new User();
$form = $this->createForm('ProjectBundleFormUserUser', $entity);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirectToRoute('admin_user_show', array('id' => $entity->getId()));
}
}
return $this->render('ProjectBundle:admin/User:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
在我的其他项目上运行良好,但我看不到我忘记了什么。
你有一个主意吗?谢谢
添加nullable = true以允许字段空白
/**
* @var string
* @AssertNotBlank()
*
* @ORMColumn(name="lastname", type="string", length=100, nullable = true)
*/
private $lastname;
编辑:
if ($form->isSubmitted()) {
if ($form->isValid()) {
$entity = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirectToRoute('admin_user_show', array('id' => $entity->getId()));
}
}