Symfony形式:根据其他字段的值显示输入(Twig)

时间:2013-07-30 16:44:28

标签: symfony twig symfony-2.1 symfony-forms

问题

我在Symfony 2(.1.8)应用程序中有一个表单,用于在名为media的表中创建条目。我在媒体表单类中使用buildForm函数构建表单 在其他字段中,media表格包含以下3个字段:urlmediatypefile

mediatype是与mediatype表的关系,我将其渲染为下拉列表,其中包含两个值:VIDEOIMAGE

我现在想做什么: 当用户在下拉列表中选择VIDEO时,url form_row应该可见。当他在下拉列表中选择IMAGE时,file form_row应该是可见的。当用户尚未选择任何内容时,urlfile都不可见。

我用这段代码尝试了这个(但是当然它没有用,因为form.vars不是动态的我猜?):

 {% if form.vars.value.mediatype == "video" %}
     {{ form_row(form.url, { 'attr': {'class': 'form_url'} }) }}
 {% elseif form.vars.value.mediatype == "image" %}
     {{ form_row(form.file, { 'attr': {'class': 'form_file'} }) }}
 {% endif %}


问题

有没有一种使用Twig和/或Symfony框架的好方法?我想用Javascript做这件事,但我首先想知道Twig / Symfony本身是否可能无法实现?

提前致谢!

1 个答案:

答案 0 :(得分:1)

  

我正在考虑使用Javascript进行此操作,但我首先想知道Twig / Symfony本身是否无法实现?

第一个想法永远是最好的;)Twig是一种模板语言,是解析服务器端的。你的想法是用javascript隐藏另一个字段是处理这些事情的好方法。

但是有一件重要的事情需要注意!我想只有一个字段urlfile必须填写。使用简单的Javascript解决方案,这两个字段将始终发送到您的应用程序。因此,Symfony2提供表单事件。关于他们有一个whole chapter in the cookbook