首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZendX_JQuery_Form_Element_AutoComplete

ZendX_JQuery_Form_Element_AutoComplete
EN

Stack Overflow用户
提问于 2012-09-20 19:02:16
回答 2查看 760关注 0票数 0

如何使用ZendX_JQuery_Form_Element_AutoComplete类获得生成的javascript代码?

代码语言:javascript
复制
    $item = new ZendX_JQuery_Form_Element_AutoComplete('item', array(
        'label' => 'Item' , 
        'id' => 'auto-item'));

    $item->setJQueryParams(array(
        'source' => $some URL , 
        'minLength' => '1'));

viewHelper生成的javascript将是:

代码语言:javascript
复制
$("#auto-item").autocomplete({"source":"some URL","minLength":"1"});

最后一行是目标

EN

回答 2

Stack Overflow用户

发布于 2012-09-21 05:12:31

假设你想找一位顾客。您的源端点可以是控制器上的一个操作,可能专用于提供自动完成数据。

需要注意的主要问题是预期数据的格式:[{"id":123,"label":"Some Customer","value":"Some Customer (ID#123)"},...

“label”和“value”使您有机会显示下拉列表的备用字符串以及最终选择的内容。

下面是一个例子。

代码语言:javascript
复制
class Service_AutocompleteController extends Zend_Controller_Action
{
    /**
     * The query / q for the auto completion
     * 
     * @var string
     */
    protected $_term;

    /** 
     * @see Zend_Controller_Action::init()
     */
    public function init()
    {       
        $this->_term = (isset($this->_request->term)) ? $this->_request->term : null;
    }

    /**
     * Serve up JSON response for use by jQuery Autocomplete
     */
    public function customerLookupAction()
    {
        // Disable the main layout renderer
        $this->_helper->layout->disableLayout();

        // Do not even attempt to render a view
        $this->_helper->viewRenderer->setNoRender(true);

        $query = "
                    SELECT  TOP 50
                            c.id                            AS id,  
                            c.name + '(ID#' + c.id + ')'    AS label,                           
                            c.name                          AS value
                      FROM  customer c
                     WHERE  $label LIKE ?
                  ORDER BY  c.name";

        $db = Zend_Registry::get(SOME_DB_ADAPTER);
        $results = $db->fetchAll($query, array('%' . $this->_term . '%'));      

        echo Zend_Json::encode($results);
    }
}

有时人们在这方面做得更进一步,并且有一个视图帮助器来发回JSON,您可以通过这种方式删除控制器操作中的一些重复代码。

票数 0
EN

Stack Overflow用户

发布于 2012-10-01 16:57:43

只需将以下代码放入您的视图文件:

代码语言:javascript
复制
$this->jQuery()->getOnLoadActions()

它返回由jQuery帮助器生成的javaScript

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12511283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档