Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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 使用简单symfony形式的怪异行为约束_Php_Forms_Symfony_Validation_Symfony Forms - Fatal编程技术网

Php 使用简单symfony形式的怪异行为约束

Php 使用简单symfony形式的怪异行为约束,php,forms,symfony,validation,symfony-forms,Php,Forms,Symfony,Validation,Symfony Forms,我试图使用一个简单的表单定义来过滤一些数据,因此我创建了没有附加类的表单(期望使用getData()函数),然后处理传递给表单的参数数组,但是表单总是无效的。结果窗体尝试验证不属于窗体上下文的参数 我在“almacen”字段上得到了这个验证错误: 此值不应为空 有理由: Symfony\Component\Validator\ConstraintViolation 对象(Symfony\Component\Form\Form).data[almacen].responsable=null 我尝试

我试图使用一个简单的表单定义来过滤一些数据,因此我创建了没有附加类的表单(期望使用getData()函数),然后处理传递给表单的参数数组,但是表单总是无效的。结果窗体尝试验证不属于窗体上下文的参数

我在“almacen”字段上得到了这个验证错误: 此值不应为空

有理由:

Symfony\Component\Validator\ConstraintViolation 对象(Symfony\Component\Form\Form).data[almacen].responsable=null

我尝试使用
cascade\u validation=false
,但没有成功

在控制器操作中,我声明:

public function indexAction(Request $request)
{
    $informeStock = $this->createForm(new BusquedaInformeStockType());

    $informeStock->handleRequest($request);
    if ($informeStock->isSubmitted() && $informeStock->isValid()) {
        $data = $informStock->getData();
        // the action logic...
    }

    ...
}
我有一个简单的表单定义,声明了实体表单类型,没有与表单相关的数据类

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('almacen', 'entity', array(
            'class' => 'BusetaBodegaBundle:Bodega',
            'placeholder' => '---Seleccione---',
            'required' => false,
            'label' => 'Bodega',
            'attr' => array(
                'class' => 'form-control',
            ),
        ))
        ...
        ...
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'csrf_protection' => false,
    ));
}
这是实体Bodega的定义:

class Bodega
{
    ...

    /**
     * @var string
     *
     * @ORM\Column(name="codigo", type="string", nullable=true)
     * @Assert\NotBlank()
     */
    private $codigo;

    /**
     * @var string
     *
     * @ORM\Column(name="nombre", type="string")
     * @Assert\NotBlank()
     */
    private $nombre;

    /**
     * @ORM\ManyToOne(targetEntity="Buseta\BodegaBundle\Entity\Tercero", inversedBy="bodega")
     * @Assert\NotBlank()
     */
    private $responsable;

    ...
}
在实体Bodega的早期版本中,参数“responsable”保留为空,因此db thas中的某些行没有“responsable”关联。 但尽管如此,这不应该发生,对吗?我做错了什么?

您有一个验证约束:

/**
 * @ORM\ManyToOne(targetEntity="Buseta\BodegaBundle\Entity\Tercero", inversedBy="bodega")
 * @Assert\NotBlank()
 */
private $responsable;
这是你的问题-断言

验证值是否不为空,是否定义为不完全为false, 不等于空白字符串,也不等于null


您几乎没有选择,要么添加验证组(和),要么简单地删除该断言。同样,最好用于这样的关联。

该字段
$resposable
是Bodega实体的一部分,但我没有定义该实体,我只使用Bodega填写筛选表单上的“选择”。