如何为symfony2中的未绑定表单字段添加验证
我试图在我的symfony2表单中验证一个未绑定的字段。
我搜索了它,发现了几个类似的解决方案,所以我做了一个复制粘贴并将自己的东西放在那里,但它对我不起作用。 可能有一个使用声明或者是我读过的所有解决方案中都没有的东西,因为每个人都知道它们是必要的,所以省略了。除了这里的菜鸟。
我的代码:
<?php
namespace BizTVUserBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilder;
use SymfonyComponentValidatorConstraintsCallbackValidator as CallbackValidator;
use SymfonyComponentFormFormValidatorInterface;
use DoctrineORMEntityRepository;
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' => 'BizTVBackendBundleEntitycompany',
));
$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 Component Form FormBuilder :: addValidator()的参数1必须实现在/ var / www中调用的接口Symfony Component Form FormValidatorInterface,Symfony Component Validator Constraints CallbackValidator的实例/biztv_symfony/src/BizTV/UserBundle/Form/newServerType.php第35行,并在/var/www/biztv_symfony/vendor/symfony/src/Symfony/Component/Form/FormBuilder.php中定义255行
所以,对于需要验证symfony 2中的未绑定表单字段的其他人,我是如何做到的 - 事实上我错过了一堆使用语句,他们没有列在我发现其他线程的任何网站上主题。
除了必需品之外,我已经清除了一切。 感谢m2mdas帮助我完成这一工作。
<?php
namespace BizTVUserBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilder;
use SymfonyComponentFormFormInterface;
use SymfonyComponentFormCallbackValidator;
use SymfonyComponentFormFormValidatorInterface;
use SymfonyComponentFormFormError;
use DoctrineORMEntityRepository;
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';
}
}
CallbackValidator
FQCN应该是SymfonyComponentFormCallbackValidator
。
上一篇: how to add validation to unbound form field in symfony2
下一篇: Symfony2 UniqueEntity validation constraint as concatenation?