php - Symfony 在 form->handleRequest() 和验证上的模糊错误

标签 php forms symfony

我有一个 Symfony 2.8.9 应用程序,其中单个表单导致在线上出现一个大的模糊错误

$form->handleRequest($request);

我的表单非常简单:只有一个 id 和一个 commentaire 字段。错误似乎是在验证任务期间发生的(下面的完整跟踪)。

[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}class', attribute 'name': 'Symfony\Component\Form\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 7, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Symfony\Component\Form\Extension\Validator\Constraints\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 8, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}property', attribute 'name': 'children' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 9, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Valid' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 10, column 0)
500 Internal Server Error - MappingException
1 linked Exception: InvalidArgumentException »

[2/2] MappingException: [ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}class', attribute 'name': 'Symfony\Component\Form\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 7, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Symfony\Component\Form\Extension\Validator\Constraints\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 8, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}property', attribute 'name': 'children' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 9, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Valid' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 10, column 0)   -
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\XmlFileLoader.php at line 179   + 
at XmlFileLoader ->parseFile ('D:\Documents\workspace\MyProject\vendor\symfony\symfony\src\Symfony\Component\Form/Resources/config/validation.xml') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\XmlFileLoader.php at line 40   + 
at XmlFileLoader ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\LoaderChain.php at line 57   + 
at LoaderChain ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\LoaderChain.php at line 57   + 
at LoaderChain ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 128   + 
at LazyLoadingMetadataFactory ->getMetadataFor ('Traversable') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 124   + 
at LazyLoadingMetadataFactory ->getMetadataFor ('IteratorAggregate') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 124   + 
at LazyLoadingMetadataFactory ->getMetadataFor (object(Form)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveContextualValidator.php at line 343   + 
at RecursiveContextualValidator ->validateObject (object(Form), '', array('Default'), '1', object(ExecutionContext)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveContextualValidator.php at line 153   + 
at RecursiveContextualValidator ->validate (object(Form), null, false) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveValidator.php at line 132   + 
at RecursiveValidator ->validate (object(Form)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener.php at line 68   + 
at ValidationListener ->validateForm (object(FormEvent), 'form.post_bind', object(EventDispatcher)) 
at call_user_func (array(object(ValidationListener), 'validateForm'), object(FormEvent), 'form.post_bind', object(EventDispatcher)) 
in app\cache\dev\classes.php at line 1858   + 
at EventDispatcher ->doDispatch (array(array(object(ValidationListener), 'validateForm'), array(object(DataCollectorListener), 'postSubmit')), 'form.post_bind', object(FormEvent)) 
in app\cache\dev\classes.php at line 1773   + 
at EventDispatcher ->dispatch ('form.post_bind', object(FormEvent)) 
in vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\ImmutableEventDispatcher.php at line 43   + 
at ImmutableEventDispatcher ->dispatch ('form.post_bind', object(FormEvent)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Form.php at line 660   + 
at Form ->submit (array('commentaire' => 'dqsdqs', 'save' => '', '_token' => 'FogMqUyv366NxySj8w1t4PLEI03pIc_V3eoiQ0tHesA'), true) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler.php at line 116   +
at HttpFoundationRequestHandler ->handleRequest (object(Form), object(Request)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Form.php at line 489   + 
at Form ->handleRequest (object(Request)) 
in src\MyBundle\Controller\CalendrierController.php at line 34   + 
at CalendrierController ->addAction (object(Request)) 
at call_user_func_array (array(object(CalendrierController), 'addAction'), array(object(Request))) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 144   + 
at HttpKernel ->handleRaw (object(Request), '1') 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 64   + 
at HttpKernel ->handle (object(Request), '1', true) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel.php at line 69   + 
at ContainerAwareHttpKernel ->handle (object(Request), '1', true) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php at line 185   + 
at Kernel ->handle (object(Request)) 
in web\app_dev.php at line 30   + 

[1/2] InvalidArgumentException: [ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}class', attribute 'name': 'Symfony\Component\Form\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 7, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Symfony\Component\Form\Extension\Validator\Constraints\Form' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 8, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}property', attribute 'name': 'children' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 9, column 0)
[ERROR 1824] Element '{http://symfony.com/schema/dic/constraint-mapping}constraint', attribute 'name': 'Valid' is not a valid value of the atomic type 'xs:time'. (in file:/D:/Documents/workspace/MyProject/web/ - line 10, column 0)   -
in vendor\symfony\symfony\src\Symfony\Component\Config\Util\XmlUtils.php at line 96   + 
at XmlUtils ::loadFile ('D:\Documents\workspace\MyProject\vendor\symfony\symfony\src\Symfony\Component\Form/Resources/config/validation.xml', 'D:\Documents\workspace\MyProject\vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\XmlFileLoader.php at line 177   + 
at XmlFileLoader ->parseFile ('D:\Documents\workspace\MyProject\vendor\symfony\symfony\src\Symfony\Component\Form/Resources/config/validation.xml') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\XmlFileLoader.php at line 40   + 
at XmlFileLoader ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\LoaderChain.php at line 57   + 
at LoaderChain ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Loader\LoaderChain.php at line 57   + 
at LoaderChain ->loadClassMetadata (object(ClassMetadata)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 128   + 
at LazyLoadingMetadataFactory ->getMetadataFor ('Traversable') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 124   + 
at LazyLoadingMetadataFactory ->getMetadataFor ('IteratorAggregate') 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory.php at line 124   + 
at LazyLoadingMetadataFactory ->getMetadataFor (object(Form)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveContextualValidator.php at line 343   + 
at RecursiveContextualValidator ->validateObject (object(Form), '', array('Default'), '1', object(ExecutionContext)) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveContextualValidator.php at line 153   + 
at RecursiveContextualValidator ->validate (object(Form), null, false) 
in vendor\symfony\symfony\src\Symfony\Component\Validator\Validator\RecursiveValidator.php at line 132   + 
at RecursiveValidator ->validate (object(Form)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener.php at line 68   + 
at ValidationListener ->validateForm (object(FormEvent), 'form.post_bind', object(EventDispatcher)) 
at call_user_func (array(object(ValidationListener), 'validateForm'), object(FormEvent), 'form.post_bind', object(EventDispatcher)) 
in app\cache\dev\classes.php at line 1858   + 
at EventDispatcher ->doDispatch (array(array(object(ValidationListener), 'validateForm'), array(object(DataCollectorListener), 'postSubmit')), 'form.post_bind', object(FormEvent)) 
in app\cache\dev\classes.php at line 1773   + 
at EventDispatcher ->dispatch ('form.post_bind', object(FormEvent)) 
in vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\ImmutableEventDispatcher.php at line 43   + 
at ImmutableEventDispatcher ->dispatch ('form.post_bind', object(FormEvent)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Form.php at line 660   + 
at Form ->submit (array('commentaire' => 'dqsdqs', 'save' => '', '_token' => 'FogMqUyv366NxySj8w1t4PLEI03pIc_V3eoiQ0tHesA'), true) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler.php at line 116   +
at HttpFoundationRequestHandler ->handleRequest (object(Form), object(Request)) 
in vendor\symfony\symfony\src\Symfony\Component\Form\Form.php at line 489   + 
at Form ->handleRequest (object(Request)) 
in src\MyBundle\Controller\CalendrierController.php at line 34   + 
at CalendrierController ->addAction (object(Request)) 
at call_user_func_array (array(object(CalendrierController), 'addAction'), array(object(Request))) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 144   + 
at HttpKernel ->handleRaw (object(Request), '1') 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\HttpKernel.php at line 64   + 
at HttpKernel ->handle (object(Request), '1', true) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel.php at line 69   + 
at ContainerAwareHttpKernel ->handle (object(Request), '1', true) 
in vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php at line 185   + 
at Kernel ->handle (object(Request)) 
in web\app_dev.php at line 30

Controller (只有addAction方法):

public function addAction(Request $request)
{
    $calendrier = new Calendrier();
    $form = $this->createForm(CalendrierType::class, $calendrier);
    $hasError = false ;

    if ($request->isMethod('POST')) {
        // Here the error occurs
        $form->handleRequest($request);
    }

    return $this->render('MyBundle:Calendrier:add.html.twig', array(
        'form' => $form->createView()
    ));
}

表单 (CalendrierType.php)

namespace MyBundle\Form ;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class CalendrierType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('commentaire', TextareaType::class, array('required' => false))
            ->add('save', SubmitType::class);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'MyBundle\Entity\Calendrier'
        ));
    }

    public function getBlockPrefix()
    {
        return 'mybundle_calendrier' ;
    }
}

还有我的Calendrier 实体 (Calendrier.php):

<?php

namespace MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use MyBundle\Entity\AbstractEntity ;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Calendrier
 *
 * @ORM\Table(name="calendrier")
 * @ORM\Entity(repositoryClass="MyBundle\Repository\CalendrierRepository")
 */
class Calendrier extends AbstractEntity
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

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

    /************ Getters and setters ******/

     /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    public function getCommentaire() {
        return $this->commentaire;
    }

    public function setCommentaire($commentaire) {
        $this->commentaire = $commentaire;
        return $this;
    }
}

这一切都非常简单。我有另一个更大的实体/表单/ Controller ,但有同样的错误,但两天前,它工作正常,而且我没有更改其他表单或配置文件中的任何内容...

堆栈跟踪和 Symfony 错误消息对我来说太奇怪了,有人可以帮助我吗?

最佳答案

我只是重新启动 Apache 服务器,然后错误消失了,代码中没有更改任何空格。

关于php - Symfony 在 form->handleRequest() 和验证上的模糊错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845280/

相关文章:

php - 在我的表格中,颜色只出现在偶数行上

php - Yii2 ListView 和数据提供者

ruby - 在 Rails 中使用 autofocus 和 text_field 表单助手

symfony - SonataAdminBundle表单字段查询

php - Symfony2 : Choose a service depending on an object classname

php - 为什么 PHP 中的右移返回负数?

php - 多个数据库、一种学说连接和一个不服从的 bundle

json - 如何使用 FOSRestBundle 和 symfony 表单处理嵌套 json

ruby-on-rails-3 - Rails 表单生成器 - 如何提高性能

django - 我应该在 Django 表单中的哪里填充提交后所需的隐藏字段?