首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向Symfony 2表单添加HTML输入

向Symfony 2表单添加HTML输入
EN

Stack Overflow用户
提问于 2016-06-23 15:42:50
回答 1查看 1.5K关注 0票数 0

我正在使用Symfony2创建一个自定义表单。我使用Symfony作为以下代码创建了表单的“第一部分”:

代码语言:javascript
运行
复制
class TelemedidaMecanicaLecturaType extends AbstractType{
    
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('fecha')
                ->add('valor')
        ;
    }
}

然后,在Twig模板中,我需要添加三个额外的字段: submit按钮和两个隐藏的输入,我需要这些输入来获取一些重要的信息。我试过这样做:

代码语言:javascript
运行
复制
<form method="post" id="FormLec{{um.id}}">
            {{ form_widget(formLecArr[um.um]) }}
            <input type="hidden" name="um" value="{{um.id}}"/>
            <input type="hidden" name="telemedidaMecanica" value="{{telemedidaMecanica.id}}"/>
            <input type="submit" value="Crear"/>
        </form>

但是,当我发送表单时,我试图从控制器获取数据,我只得到"fecha“和"valor”值。这很奇怪,因为缺少的字段显示在HTML文本中(使用chrome中的检查代码实用程序),而submit按钮工作正常。"um“和"telemedidaMecanica”值在哪里?我做错什么了?

谢谢!艾萨克。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 16:50:01

您需要做的是在创建表单时将所有表单字段传递给FormType。submit按钮只发布从Formbuilder生成的值。

你可以这样做:

代码语言:javascript
运行
复制
class TelemedidaMecanicaLecturaType extends AbstractType{

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('fecha')
                ->add('valor')
                ->add('um','hidden')
                ->add('telemedidaMecanica','hidden')
        ;
    }
}

或者,如果您无法访问实体本身中的这些变量,则可以在从Controller本身实例化FormBuilder时传递这些值。

在您的控制器中这样的东西会起作用的:

代码语言:javascript
运行
复制
$form = $this->createForm(new TelemedidaMecanicaLecturaType($um, $telemedidaMecanica);

然后在您的FormBuilder中,您可以利用表单的数据属性。这样做:

代码语言:javascript
运行
复制
class TelemedidaMecanicaLecturaType extends AbstractType{

    private $um;
    private $telemedidaMecanica;

    public function __construct($um, $telemedidaMecanica)
    {
        $this->um= $um;
        $this->telemedidaMecanica= $telemedidaMecanica;
    }

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('fecha')
                ->add('valor')
                ->add('um','hidden', array('data' => $this->um, 'mapped' => false))
                ->add('telemedidaMecanica','hidden', array('data' => $this->telemedidaMecanica, 'mapped' => false))
        ;
    }
}

当您单击Submit时,这也会发布隐藏值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37996196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档