根据Zend Framework为自动完成提供额外参数

时间:2009-07-04 21:15:49

标签: php javascript jquery ajax zend-framework

我有一个表格(至少)有以下两个字段:

  • 国家
  • 俱乐部

俱乐部是通过 ZendX_JQuery_Form_Element_AutoComplete 元素生成的字段,该元素还会生成以下javascript代码:

$("#club").autocomplete({"url":"\/mywebsite\/\/mycontroller\/autocomplete"});

我有一个每个国家的俱乐部数据库。我想要的是只有俱乐部被退回给(用户)给定的国家/地区。应通过远程(ajax)调用检索此列表。代码是:

 public function autocompleteAction()
    {
        $request = $this->getRequest();

        $filter = $request->getParam('q');
        $country = $request->getParam('country');

        $clublist = getClubListBySubstring($country, $filter);

        $this->_helper->autoComplete($clublist);
    }

我可以更改上面的javascript代码,绕过ZendX_JQuery_Form_Element_AutoComplete完成的生成,并在URL中添加一个额外的元素,将其解释为参数 country

但是有更优雅的解决方案吗?我已经阅读了有关ExtraParams的内容,是否可行,以及如何使用?

1 个答案:

答案 0 :(得分:4)

这是使用服务器生成Javascript的“灰色区域”之一,可能会对您不利。自己编写客户端脚本会以多种方式使您受益:

  • 您将了解有关jQuery自动完成功能的更多信息以及使用它可以执行的操作。
  • 您可以更好地控制自动填充程序的行为。
  • 您的解决方案将更少依赖于Zend Framework,因此更具可移植性。

在将ZendX_JQuery_Form_Element_AutoComplete视为端到端解决方案之前,我会熟悉addition parameters on the jQuery side of things。另外,如果您还没有阅读Joel Spolsky题为“泄漏抽象法则”的以下文章:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

我已经实现了一个自动完成器(绑定到ZF控制器操作),并且完全了解ZF的自动完成帮助程序的存在,但是选择不使用它,因为我不想处于应用的情况之一一个小小的调整将需要废弃整个解决方案,因为服务器上的代码生成工具不想播放。

希望这比烦人更有帮助。