【问题标题】:Load information dynamically in Symfony2 form builder在 Symfony2 表单构建器中动态加载信息
【发布时间】:2013-05-13 01:35:51
【问题描述】:

我正在使用 Symfony2。我在表单构建器中有两个字段,当我在第一个字段中选择一个选项时,第二个字段中的信息应该根据第一个选项动态重新加载。

我该怎么做?

【问题讨论】:

  • 您可以使用 ajax (Jquery) 执行此操作,向某个控制器发出 ajax 请求并使其返回信息.. 并使用 jquery 填充该字段.. 这就是它的完成方式(我不认为还有其他方法)如果您希望它是动态的
  • 请在williamdurand.fr/2012/08/02/…进一步阅读
  • 谢谢codiez,但我是Symfony 2的初学者,请你解释一下。

标签: symfony formbuilder


【解决方案1】:

我们需要什么?

为了简单起见,假设您需要在用户输入“敲门”时下一个字段填充“谁在那里”。

假设第一个字段(用户将填写)的 id 为 #input_filled_by_user,另一个字段的 id 为 #input_filled_with_php

我们如何解决这个问题?

只要用户在脚本执行后会打字,我们就需要告诉我们他用“knock knock”(即 jQuery)写的特定单词,并将其发送到控制器(a REST API 的花哨名称)。

然后在控制器中我们处理并返回结果,并使用 jQuery(再次)将结果输出给用户。

代码

首先我们需要一个路由器:

my_door_keeper_router:
    pattern:  /request/{string}
    defaults: { _controller: AcmeDemoBundle:door:keeper, _format: ~ }
requirements:
    _method: GET
    id: "\d+"

这里是动作控制器:

public function keeperAction($string)
{

    if ($string == 'knock knock') {
        echo "hello"; // please dont do it with echo use symfony way , i just dont have enough time 
    }

    return;
}

现在使用 jQuery:

$('#input_filled_by_user').change(
   function(){
      $.get('/request', { string: $(this).val() } ,function(data) {
  $('#input_filled_with_php').val(data);
  alert('Load was performed.');
});
   }
)

就是这样。希望这是有道理的(请深入挖掘,我试图以虚拟的方式解释它,我提到的一些事情是正确的,但无论您现在尝试做什么,都可以这样做)。

【讨论】:

  • 您好。很好的答案,但我们的问答形式确实非常重视演示。所以,如果您可以使用一些大写字母,不胜感激!
猜你喜欢
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多