【问题标题】:Supply extra parameter to autocomplete according to Zend Framework根据 Zend 框架为自动完成提供额外的参数
【发布时间】:2009-07-04 21:15:49
【问题描述】:

我有一个包含(至少)以下两个字段的表单:

  • 国家
  • 俱乐部

俱乐部是通过 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 完成的生成,并向被解释为参数 country 的 URL 添加一个额外的元素。

但是有更优雅的解决方案吗?我读过一些关于 ExtraParams 的文章,它会起作用吗?如何做?

【问题讨论】:

    标签: php javascript jquery ajax zend-framework


    【解决方案1】:

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

    • 您将了解有关 jQuery 自动完成功能以及您可以使用它做什么的更多信息。
    • 您可以更好地控制自动完成程序的行为。
    • 您的解决方案将减少对 Zend 框架的依赖,因此更便于移植。

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

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

    我已经实现了一个自动完成器(与 ZF 控制器操作相关联)并且完全了解 ZF 的自动完成帮助器的存在,但选择不使用它,因为我不想处于应用由于服务器上的代码生成工具不想运行,因此需要进行微小的调整。

    希望这比烦人更有帮助。

    【讨论】:

    • 感谢文章的linek,我不知道,但我同意其中的内容,我也在实践它。但是我之前不得不绕过一些 Zend Framework 抽象(尤其是生成的 Zend_Forms 的布局),但在大多数情况下它并不是那么好(重复)。我更喜欢“Zend Framework”方式,因为它大部分时间都非常干净整洁,而且我不害怕依赖 Zend Framework,因为我的整个 Web 应用程序已经是这样,它为我节省了大量时间来开发实用程序库等等。
    猜你喜欢
    • 2014-04-29
    • 2021-09-13
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2015-12-15
    • 2011-04-17
    相关资源
    最近更新 更多