0

如何获取使用 ZendX_JQuery_Form_Element_AutoComplete 类生成的 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 将是:

$("#auto-item").autocomplete({"source":"some URL","minLength":"1"});

最后一行是目标

4

2 回答 2

0

Juste把它放在你的视图文件中:

$this->jQuery()->getOnLoadActions()

它返回由 jQuery 助手生成的 javaScript

于 2012-10-01T08:57:42.573 回答
0

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

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

“标签”和“值”让您有机会显示下拉列表的替代字符串以及最终选择的内容。

这是一个例子。

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,您可以通过这种方式删除控制器操作中的一些重复代码。

于 2012-09-20T21:12:31.207 回答