Symfony中自动完成概念的问题

时间:2010-12-31 05:10:42

标签: php jquery ajax autocomplete symfony1

我正在开发一个主要用于表单提交的Symfony应用程序,我们的团队需要对验证进行极端定制,因此我们选择不使用表单帮助程序和窗口小部件。现在每个表单都有一个提交和检索的操作方法。在其中一个表单之间我需要自动填充,但我不知道如何将其发送到keyup事件的新操作方法并从那里返回数据。我完全无法从使用Firebug检查过的数据中返回数据。我找到了提交整个表单进行搜索自动填充的文章。我不能这样做,因为我的自动填充字段不是表单上唯一的字段。这是一个我必须提出建议的城市领域。我应该使用jQuery框架。请帮忙。

此外,我不太了解Symfony中的AJAX概念。如果你能把我链接到一些好的文章,那将会非常有用。

感谢所有帮助。 非常感谢。

1 个答案:

答案 0 :(得分:3)

Symfony对ajax请求的响应的主要区别是动作不会使用布局装饰视图(actionSucces.php)(因此它也不包括Web调试工具栏)。

在您的情况下,您可以使用jQuery自动完成插件(http://docs.jquery.com/Plugins/autocomplete)来生成极端自定义表单:D

您可以使用slot在布局中定义jQuery对象定义

<head>
    <?php if (has_slot('head_script')): ?>
    <?php    include_slot('head_script') ?>
    <?php endif ?>
 </head>

在极端自定义表单模板中定义您的jQuery自动完成

<?php slot('head_script')  ?>
<?php echo javascript_tag('$(function{
$("#example").autocomplete("'.url_for('search/cities').'");
});') ?>

<?php echo form_tag('form/result') ?>
<?php echo tag('input', array('name'=>'example','id'=>'example'));
</form>

当用户开始输入发送到指定后端的请求时,不要忘记包含jQuery和Autocomplete插件,其中GET参数q包含输入框的当前值,参数“limit”具有指定的值最大选项。 (请参阅文档:D)

现在创建动作搜索/城市并使用$ request-&gt; getParameter('q')来填充响应

public function executeCities(sfWebRequest $request){
  //process the $request->getParameter('q')
  return $this->renderText("First Second Third Fourth");
}
欢呼和新年快乐:D