Обновить

ZendX_JQuery + jqGrid

Чулан
В продолжение темы о связке 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 скрипт. Это сделано для того, чтобы грид мог отображать те поля, к которым у пользователя есть доступ, так как наборы доступных полей постоянно меняются.

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

Похожие публикации

Framework Laravel
29 апреля 202150 000 ₽OTUS
Тренажер product-менеджера
11 марта 202134 200 ₽SkillFactory
Профессия Project Manager
11 марта 202191 000 ₽Нетология
Тестировщик
11 марта 202157 900 ₽Нетология

Лучшие публикации за сутки