如何添加验证,在Symfony2的未绑定的表单字段(how to add validation to

2019-06-27 03:04发布

我想验证我的Symfony2形式的未绑定领域。

我用Google搜索了一下,发现几个类似的解决方案,所以我做了复制粘贴,把我自己的东西在里面,但它并没有为我工作。 有可能是一个使用声明或东西,从我所读的解决方案,省略,因为每个人都知道他们是必要的缺失..。除这里的新秀是。

我的代码:

<?php

namespace BizTV\UserBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

use Symfony\Component\Validator\Constraints\CallbackValidator as CallbackValidator;
use Symfony\Component\Form\FormValidatorInterface;

use Doctrine\ORM\EntityRepository;

class newServerType extends AbstractType
{

    public function buildForm(FormBuilder $builder, array $options)
    {

        $builder
            ->add('company', 'entity', array(
                'label' => 'Vilket företag tillhör servern? ',
                'multiple' => FALSE,
                'expanded' => FALSE,
                'property' => 'companyName',
                'class'    => 'BizTV\BackendBundle\Entity\company',
            ));     

        $builder->add('screenName', null, array('property_path' => false, 'label' => 'Namn på skärmen (användaren kan ändra det senare) '));

        $builder-> addValidator(new CallbackValidator(function(FormInterface $form){
          $screenName = $form['screenName'];
            if (empty($screenName)) {
              $form['screenName']->addError(new FormError("Du måste ange ett namn för den nya skärmen"));
            }
        }));

        $builder
            ->add('username', 'text', array('label' => 'Servernamn (endast för serverns login samt vår referens)'))            
            ->add('plainPassword', 'repeated', array('type' => 'password', 'first_name' => 'Lösenord för server ', 'second_name' => 'Upprepa lösenord för server',));

    }

    public function getName()
    {
        return 'biztv_userbundle_newservertype';
    }
}

我的错误:

开捕致命错误:传递给Symfony的\分量\形式参数1 \ FormBuilder ::在addValidator()必须实现接口的Symfony \分量\表格\ FormValidatorInterface,Symfony的\分量\验证\约束\ CallbackValidator的情况下给出的,被称为在/ var / WWW /biztv_symfony/src/BizTV/UserBundle/Form/newServerType.php线路35上和在/var/www/biztv_symfony/vendor/symfony/src/Symfony/Component/Form/FormBuilder.php线255限定

Answer 1:

因此,对于在symfony中2这里未绑定的表单字段谁都需要验证我怎么会做这件事 - 原来我错过了一堆的使用说明,他们没有在任何网站的上市,我发现其他线程上主题。

我已经淘汰一切,但要领。 由于m2mdas帮助我一起在这一个。

<?php

namespace BizTV\UserBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\CallbackValidator;
use Symfony\Component\Form\FormValidatorInterface;
use Symfony\Component\Form\FormError;


use Doctrine\ORM\EntityRepository;

class newServerType extends AbstractType
{

    public function buildForm(FormBuilder $builder, array $options)
    {   
        $builder->add('screenName', null, array('property_path' => false, 'label' => 'Namn på skärmen (användaren kan ändra det senare) '));

        $builder-> addValidator(new CallbackValidator(function(FormInterface $form){
          $screenName = $form->get('screenName')->getData();
            if (empty($screenName)) {
              $form['screenName']->addError(new FormError("Du måste ange ett namn för den nya skärmen"));
            }
        }));    
    }

    public function getName()
    {
        return 'biztv_userbundle_newservertype';
    }
}


Answer 2:

CallbackValidator FQCN应Symfony\Component\Form\CallbackValidator



文章来源: how to add validation to unbound form field in symfony2