gpt4 book ai didi

forms - 将错误绑定(bind)到 symfony2 Controller 中的嵌入式表单字段

转载 作者:行者123 更新时间:2023-12-03 08:31:06 25 4
gpt4 key购买 nike

使用 Symfony2.3.​​4

正如标题所解释的那样,我需要将错误消息绑定(bind)到嵌入式表单字段,最好是在 Controller 中。我在想可能类似于我使用单一表格的方式:

use Symfony\Component\Form\FormError;
//....
public function createAction(){
//.....
$postData = current($request->request->all());

if ($postData['field_name'] == '') {
$error = new FormError("Write some stuff in here");
$form->get('field_name')->addError($error);
}
//.....
}

或者也许它必须以不同的方式完成,无论哪种方式我都需要帮助,

谢谢$

最佳答案

我明白了,当表单字段不包含任何值时,您正试图显示一条消息。您可以在表单类中轻松执行此操作,如下所示:

buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('field_name', 'text', array(
'label' => 'Field label',
'required' => true,
'constraints' => array(
new NotBlank(array('message' => 'Write some stuff in here.'))
),
));
}

如果你需要给你的表单注入(inject)一些不属于 Symfony2 框架的约束,你可以 create your own validation constraint .

如果您想在 Controller 中为表单添加一些选项,可以通过设置自己的选项在创建表单的方法中完成:
class YourController {
public function createForm(YourEntity $yourEntity){
$form = $this->createForm(new YourFormType(), $yourFormType, array(
'action' => $this->generateUrl('your_action_name',
array('your_custom_option_key' => 'Your custom option value')),
'method' => 'POST',
));

return $form;
}

// Rest of code omitted.
}

之后您需要在 setDefaultOptions(OptionsResolverInterface $resolver) 中添加一个选项方法,在您的表单类中,如下所示:
public function setDefaultOptions(OptionsResolverInterface $resolver){
$resolver->setDefaults(array(
'your_custom_option_key' => '',
));
}

然后在 buildForm(FormBuilderInterface $builder, array $options) 中访问它方法,像这样:
buildForm(FormBuilderInterface $builder, array $options) {
$options['your_custom_option_key']; // Access content of your option

// The rest of code omitted.
}

关于forms - 将错误绑定(bind)到 symfony2 Controller 中的嵌入式表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23448558/

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