gpt4 book ai didi

php - 如何向 symfony2 中的未绑定(bind)表单字段添加验证

转载 作者:行者123 更新时间:2023-12-05 00:03:35 26 4
gpt4 key购买 nike

我正在尝试验证我的 symfony2 表单中的未绑定(bind)字段。

我用谷歌搜索并找到了几个类似的解决方案,所以我进行了复制粘贴并将我自己的东西放在那里,但它对我不起作用。我阅读的所有解决方案中可能都缺少一个 use 语句或某些东西,被省略是因为每个人都知道它们是必要的......除了这里的菜鸟。

我的代码:

<?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';
}
}

我的错误:

Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\FormBuilder::addValidator() must implement interface Symfony\Component\Form\FormValidatorInterface, instance of Symfony\Component\Validator\Constraints\CallbackValidator given, called in /var/www/biztv_symfony/src/BizTV/UserBundle/Form/newServerType.php on line 35 and defined in /var/www/biztv_symfony/vendor/symfony/src/Symfony/Component/Form/FormBuilder.php line 255

最佳答案

因此,对于任何其他需要在 symfony 2 中验证未绑定(bind)表单字段的人来说,我最终是这样做的——结果我遗漏了一堆 use 语句,它们没有在我找到的任何网站上列出关于该主题的其他主题。

除了最重要的部分,我已经删除了所有内容。感谢 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';
}
}

关于php - 如何向 symfony2 中的未绑定(bind)表单字段添加验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11995440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com