Symfony 3-验证约束无效



我的验证有问题,我的验证都没有。我遵循文档,放置正确的代码,但什么也没做。

<?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()));
        }
    } 

最新更新