如何将参数从控制器传递给 FormType 构造函数

编程入门 行业动态 更新时间:2024-10-09 00:39:26
本文介绍了如何将参数从控制器传递给 FormType 构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在 Symfony2.7 中,我能够在创建表单时直接将参数从控制器传递给表单类型构造函数,但是在 Symfony3 中我无法做到!

In Symfony2.7 i was able to pass parameter to Form Type constructor directly from controller while creating the form, however in Symfony3 i'm not able to do it!

Symfony2.7 之前

$postedBy = $this->getUser()->getFullname(); $form = $this->createForm(new NewsType($postedBy));

Symfony3 之后

$form = $this->createForm(NewsType::class); // no idea how to pass parameter?

更新:我还想从以下位置访问它:

Update: I also wanted to access it from:

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { // how to access posted_by_name here which is sent from controller }

任何帮助将不胜感激..

Any help will be highly appreciated..

推荐答案

感谢您抽出宝贵时间!我自己解决了这个问题:

Thanks for your time! i resolved this myself:

我从 NewsType 构造函数中删除了参数,并使用 $options 数组将数据添加到了 PostedBy 表单字段,并将数据从控制器传递到了 $options 数组,请检查以下内容:

I removed parameter from NewsType constructor and added data to postedBy form field using $options array, and passed data to $options array from controller, please check following:

新闻类型

public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('postedBy', HiddenType::class, array( 'data' => $options['postedBy'] ) ) ; } // WARNING: this is a MANDATORY block! Only options described here will be allowed to be passed. public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'postedBy' => null, )); }

控制器

$form = $this->createForm(NewsType::class, $news, array( 'postedBy' => $this->getUser()->getFullname(), );

更新:如果您想从 addEventListener 访问 $options 数组,请使用以下代码:

UPDATE: Please use below code if you want to access $options array from addEventListener:

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $postedBy = $event->getForm()->getConfig()->getOptions()['postedBy']; }

希望对大家有所帮助!

Hope it helps somebody!

更多推荐

如何将参数从控制器传递给 FormType 构造函数

本文发布于:2023-11-17 11:00:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1609799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   控制器   函数   参数   FormType

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!