Как стать автором
Обновить

ZendX_JQuery + jqGrid

Время на прочтение3 мин
Количество просмотров1.7K
В продолжение темы о связке Zend/Doctrine.
Учитывая что потребуется решить вопрос о постраничном листинге данных из таблицы, было принято решение использовать jqGrid в качестве данного инструмента.
Причина выбора проста — на данный момент это один из наиболее мощных гридов, с хорошей документацией и тд.

1) Создаем View_Helper. В нашем примере мы создаем данный класс в нашей библиотеке — Xms_ZendX_JQuery_View_Helper_jqGrid

public function jqGrid($id, array $params = array())<br/>
{<br/>
    $params = $this -> _adjuctParams($params);<br/>
    if(count($params) > 0) {<br/>
        $encodedParams = ZendX_JQuery::encodeJson($params);<br/>
    } else {<br/>
        $encodedParams = "{}";<br/>
}<br/>
 <br/>
    $js = sprintf('%s("#%s").jqGrid(%s);',<br/>
                 ZendX_JQuery_View_Helper_JQuery::getJQueryHandler(),<br/>
                 $id,<br/>
                 $encodedParams<br/>
                 );<br/>
    $this->jquery->addOnLoad($js);<br/>
    $this-> view -> headscript()->appendFile('/js/jquery/jquery.jqGrid.js');<br/>
    $this-> view -> headLink()-> appendStylesheet('/css/jsgrid/steel/grid.css');<br/>
 <br/>
    $html = "<table id="'. $id . '"></table>";<br/>
    $html .= '<div id="'. $params['pager'] . '" class="scroll" style="text-align:center;"></div>';<br/>
    return $html;<br/>
}



Что происходит в данном методе
1) Парметры для установки jqGrid приводятся к полному виду, необходимому для отображения грида.
2) Добавляются скрипт и файл стилей
3) Прописываются теги для отображения самого грида и постраничной разбивки.
4) Добавляется событие onLoad для инициализации грида на клиенте.

Теперь регистрируем хелпер в bootstrap-е
$view->addHelperPath('Xms/ZendX/JQuery/View/Helper/', 'Xms_ZendX_JQuery_View_Helper');

И в нашем view скрипте вызываем хелпер для получения грида
<?= $this->jqGrid(«jqGrid»,$this->jqGridParams); ?>

Где jqGridParams создается в контроллере следующим образом
$columns = Xms_DoctrineX_Table::getAccessibleColumns('Modules');<br/>
foreach($columns as $key=>$val){<br/>
    $colNames[] = $this->_translate->_($key);<br/>
    $colModel[] = array("name" => $key, "sortable" => "true", "align"=> "right");<br/>
}<br/>
$this->view->jqGridParams = array('url'=>'/cms/modules/index',<br/>
                                'colNames'=>$colNames,<br/>
                                'colModel'=>$colModel,<br/>
                                );



Набор столбцов создается динамически и передается как парметр во view скрипт. Это сделано для того, чтобы грид мог отображать те поля, к которым у пользователя есть доступ, так как наборы доступных полей постоянно меняются.

Вот собсно и все. Результат — динамический грид, с меняющимся в зависимости от прав набором полей.
Теги:
Хабы:
-1
Комментарии1

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн