Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在已删除的小部件上禁用@Assert验证_Php_Forms_Symfony_Validation_Assert - Fatal编程技术网

Php 如何在已删除的小部件上禁用@Assert验证

Php 如何在已删除的小部件上禁用@Assert验证,php,forms,symfony,validation,assert,Php,Forms,Symfony,Validation,Assert,我不知道为什么断言验证仍然适用于我删除的小部件 我创建一个表单 $form = $this->createForm(UserType::class, $doctor); 然后我从中删除了一些字段 $form ->remove("picture"); $form ->remove("phone"); 事实上,这些字段已从视图中删除!但当我点击submit时,我仍然会在手机上收到“@Assert\NotBlank()错误消息 在我做的控制器上 $doctor = new Use

我不知道为什么断言验证仍然适用于我删除的小部件

我创建一个表单

$form = $this->createForm(UserType::class, $doctor);
然后我从中删除了一些字段

$form ->remove("picture");
$form ->remove("phone");
事实上,这些字段已从视图中删除!但当我点击submit时,我仍然会在手机上收到
“@Assert\NotBlank()
错误消息

在我做的控制器上

$doctor = new User();
$form = $this->createForm(UserType::class, $doctor);

$form ->remove("picture");
$form ->remove("phone");
这是用户实体的代码(我删除了getter和setter)


这是因为无论添加或删除哪些字段,您都在验证实体。在这些情况下,您可以使用验证组:

因此,对于您的案例,您可以在“默认”旁边创建一个新组,例如“医生”

对于所有需要验证的字段,请添加:

*@Assert\NotBlank(组={“默认”、“医生”})

对于电话字段:

*@Assert\NotBlank(组={“默认值”})

不要忘记在表单中设置正确的验证组:

但在这种情况下,我需要为我拥有的每个组创建一个新表单?您可以在创建表单时通过验证组,也可以在表单本身中更改它们。
<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 * @UniqueEntity(
 *     fields={"username"},
 *     message="The username is already used."
 * )
 * @UniqueEntity(
 *     fields={"email"},
 *     message="The Email is already used."
 * )
 */
class User implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255 ,  unique=true)
     * @Assert\NotBlank()
     */
    private $username;

    /**
     * @ORM\Column(type="string", length=255 , unique=true)
     * @Assert\NotBlank()
     * @Assert\Email(message="This Email is not valid ")
     */
    private $email;

    /**
     * @ORM\Column(type="string", length=255 )
     * @Assert\NotBlank()
     * @Assert\Length(
     *      min = 8, max = 30,
     *      minMessage = "Your password must be between 8 and 30 characters.")
     *  @Assert\EqualTo(propertyPath = "password2", message="Passwords does not match!" )
     */
    private $password;


   /**
     * @Assert\NotBlank()
    *  @Assert\EqualTo(propertyPath = "password", message="Passwords does not match!" )
     */

    private $password2;


    /**
     * @ORM\Column(type="string", length=50, nullable=true),
     * @Assert\NotBlank(),
     * @Assert\Regex(
     * pattern="/[0-9]{8}/",
     * message="Invalid Phone number"
     * )
     */
    private $phone;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $picture;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $braclet_id;

    /**
     * @ORM\Column(type="boolean")
     */
    private $is_doctor;

    /**
     * @Assert\Length(min=5, max=100)
     * @ORM\Column(type="string", length=255)
     * @Assert\NotBlank()
     */
    private $Full_Name;

    /**
     * @ORM\Column(type="boolean")
     */
    private $isActive;

 }
{{ form_start(form, {attr: {novalidate: 'novalidate'}}) }}

        {{ form_widget(form.Full_Name, {'attr': {'class': 'form-control', 'placeholder': 'Full Name','type': 'text'} }) }}       
        {{ form_errors(form.Full_Name) }} 

        {{ form_widget(form.username,  {'attr': {'class': 'form-control', 'placeholder': 'Username'} }) }}      
        {{ form_errors(form.username) }} 


        {{ form_widget(form.email,  {'attr': {'class': 'form-control', 'placeholder': 'Email Adress'} }) }}     
        {{ form_errors(form.email) }}


        {{ form_widget(form.password, {'attr': {'class': 'form-control', 'placeholder': 'Password','type': 'Password'} }) }}        
        {{ form_errors(form.password) }} 

        {{ form_widget(form.password2, {'attr': {'class': 'form-control', 'placeholder': 'Confirm Password','type': 'Password'} }) }}       

        {{ form_errors(form.password2) }} 

        <button class="btn btn-raised g-bg-cyan waves-effect">SIGN UP</button>

{{ form_rest(form) }}
{{ form_end(form) }}