在Symfony2表单构建器中动态加载信息

时间:2013-05-17 19:32:19

标签: symfony formbuilder

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我们需要什么?

让我们假设为了简单起见,当用户输入'knock knock'时,下一个字段中填写的是“谁在那里”。

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

我们如何解决这个问题?

只要用户在脚本执行后输入,我们需要告诉我们他写的具体单词或者'knock knock'(即jQuery),并将其发送给控制器(a休息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.');
});
   }
)

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