Статьи
Портфолио
Друзья
Контакты

Последние статьи

06.07.2010 Memcache и Zend: у Вас "падает" Memcache? 4 коммент.

06.07.2010 Collabtive - web-based project management software 2 коммент.

03.06.2010 Ускоряем ZF-проекты: автолоад и сборка в один файл 2 коммент.

Все

Категории

PHP 2 стат.

Zend Framework 25 стат.

Javascript 3 стат.

Другое 12 стат.

Книги 1 стат.

Украина 1 стат.

Все

RSS

Статьи

Комментарии

Портфолио

Облако тегов

программирование  Программы  портфолио  php  zend framework  Zend_Db  Smarty  Zend_Form  паттерны  javascript  niceforms  jQuery  Zend_Mail  веб  Google  Zend_Rest  Zend_View_Helper  zend casts  Zend_View  Zend_Layout  speedUp  интернет  Загрузчик фотографий  Flash  ВКонтакте  zend  localization  zend_translate  gettext  антон шевчук  подарки  Я читаю  Книги  sphinx  релизы 

Все

Реклама



Статистика



Rambler's Top100

Главная > Статьи > Zend Framework > Простые решения. jQuery Grid и Zend Framework
03.12.08 Простые решения. jQuery Grid и Zend Framework

Здравствуйте. Вот решил Вам поведать о способах красивой подачи данных пользователям в виде замечательной и умной Javascript-таблички. Работая с ней уже несколько месяцев, я не перестаю восхищаться её простотой и удобностью. Также мной было замечено, что пользователи прекрасно её понимают и не теряются при её виде. Исходя из выше изложенного, я даже написал класс на PHP, который позволяет быстро и эффективно внедрить разработку в проект с базовым набором функционала.

 

 

Проблема


 

Как красиво предоставить пользователю определённые табличные данные, дав ему в руки весь необходимый функционал, объединенный в одном компоненте?

 

 

Решение


В своих проектах я решил делать упор на jQuery, поскольку этот фреймворк имеет довольно небольшой объем, под него написано много прекрасных плагинов и дополнений, да и самому мне на нём кодить легче, чем с помощью других фреймворков. Не буду углубляться в объяснение причин такого выбора - давайте лучше приступим к делу.

 

В один прекрасный день я решил, что нужно придумать что-то красивое для предоставления данных пользователю. Я хотел использовать в своих проектах Ajax-грид, который бы предоставлял интерфейс для сортировки данных в понятном для пользователя виде. И как обычно в поисках подобных решений, я пошел искать плагины для jQuery, которые могли бы сделать подобное. Перебрав кучу разных плагинов, мой выбор остановился именно на плагине jqGrid, который удовлетворил мои требования.

 

Итак, чего же такого он умеет и что меня так привлекло:

  1. Сортировка данных;
  2. Постраничный вывод результатов;
  3. Редактирование данных прямо в таблице;
  4. Поддержка многоязычности;
  5. Легкость программирования дополнительного функционала;
  6. Хорошая документация;
  7. Поддержка тем;
  8. Кроссбраузерность;
  9. Поддержка разных типов данных для подачи плагину;
  10. И много еще забавных вещей.

Примеры здесь. Я начал экспериментировать и играться с этим плагином и понял, что он целиком удовлетворяет моим требованиям.

Таблица

jqGrid принимает немаленькое количество разных типов данных:

  1. XML Data;
  2. XML String;
  3. JSON Data;
  4. JSON String;
  5. Array Data;
  6. User Data.

Также есть субгриды, которые помогут Вам реализовать master/detail таблицу.

 

В общем, впечатления просто супер! Проект постоянно развивается и к тому же является бесплатным решением.

 

Для того, чтобы быстро и эффективно внедрять в разработку такой грид, я написал небольшой класс, который позволит сконфигурировать и вывести плагин. Класс написан на скорую руку и реализует лишь базовые возможности компонента, поэтому он далеко не идеальный, но для меня пока хватает:


 

А теперь покажу Вам пример его использования:


 

Все! Остались только маленькие штришки. Подготовим наш файл вида:


Чтобы лучше понять работу плагина, ознакомьтесь с прилагающейся документацией.

 

 

Выводы


Компонент будет очень полезен в админ-панелях, на сайтах, где много табличных данных, а класс, который я написал, поможет Вам более быстро интегрировать грид в разработку.

Теги:  jQuery, zend framework, программирование

Другие категории:

■ PHP ■ Zend Framework ■ Javascript ■ Другое ■ Книги ■ Украина
Комментарии к статье
  maximus

20.03.09 09:43:47

Действительно супер!!! Большое спасибо!

  illusive

23.03.09 16:44:13

Спасибо за признательность

  Ahiles

30.03.09 16:34:32

Серьезно, запарился разбираться :) Но разобрался, СПС. Хорошая идея, Я уже свою написал :)

  illusive

01.04.09 10:33:36

Серьезно, запарился разбираться :) Но разобрался, СПС. Хорошая идея, Я уже свою написал :)

Да есть там немного гемора... Спасибо за отзыв, очень хотелось бы посмотреть Вашу идею...

  LighteR

20.05.09 07:11:47

Немного позанудствую.

это можно заменить одной строкой:

  illusive

21.05.09 16:49:39

@LighteR

Спасибо, за замечание.

  code_x

28.05.09 03:33:40

Спасибо большое за статью, все понятно и просто :) Но...проблема из-за которой я нашел этот пост, не изчезла Невинность может Вы подскажете в чем дело? Грид не отображается в Zend, если этот же код(исходник страницы из Zend) скомпилировать в корне веб-сервера, грид работает. Испробывал много способов подключения этого компонента, под "чистым" пхп работает, во фреймворке нет ...

  illusive

31.05.09 12:14:40

Извините, но я не совсем Вас понял. Скажу только одно - юзаю этот грид вместе с ZF уже достаточно давно и у меня все работает

  Ahiles

10.06.09 07:28:23

Народ выручайте, У меня не работает onSelectRow(), говорит следующее:

  illusive

10.06.09 10:56:27

Ahiles, у меня все заработало. Лично проверил. Версия jqGrid 3.4.3...

Написал у себя следующий PHP код:

Что равносильно в JS:

Проверьте правильность синтаксиса, ведь onSelectRow - это не функция, а параметр при настройке грида

  Ahiles

10.06.09 11:01:58

illusive Спасибо, жалко конечно что ты в аську не выходишь. Или просто меня не добавляешь :(.

У меня появился другой вопрос, а кто нибуть пробывал jqGrid 3,5 BETA????

  Ahiles

10.06.09 12:02:57

illusive, не помогает "onSelectRow":function(rowid){alert(rowid);}.

Все проверил, все нормально. я даже jqgrid до 3.5 обновил, результат - 0.


  illusive

10.06.09 15:02:11

Извини насчет аси, просто я еще занимаюсь сессией в универе, да и с нетом вопрос не решен. Хмурый

Лучше бы ты JS показал... У меня просто библиотечка Fooup_JQuery переписанная и без проблем работает Невинность

Вот ссылка на JQuery PHP библиотеку под Zend Framework. Правда выдер её из проекта, над которым тружусь сейчас, поэтому не проверял её как-бы в отдельности... Вобщем, поправиш чего потребуется и будет тебе щастье Смеётся

  illusive

10.06.09 15:05:29

> а кто нибуть пробывал jqGrid 3,5 BETA????

Нет, я пока не берусь. Меня и текущий грид устраивает. А тот пускай доработают сначала, а тогда уже посмотрим...

  Tolik

13.07.09 18:15:52

привіт! замість цього

$pagesCount = intval($totalCount/10);

if ($totalCount%10>0) $pagesCount++; 

краще написати так 

$pagesCount = ceil($totalCount/10);

компактніше як ніяк))


 

  Mugik

14.07.09 11:10:59

Привет всем!
Сделал все как написано сверху, но ничего не выводит(((

файлы норм подгружаются(  'base'=>'/js/grid/grid.base.js',$_themesPath = '/js/grid/themes/';и '/js/jquery-1.3.2.js'; )

массив data вроде формируется нормально. {"total":"1","page":"1","records":"1","rows":{"id":"5","cell":["edede","dedededed"]}}

в чем может быть косяк?

 

  Ahiles

14.07.09 11:18:57

Во-первых: На сколько я помню все скрипты от jqGrid`а должны подключатся после jquery. Во-вторых, проверь, подключились ли у тебя библиотеки: jqDnR.js и jqModal.js, и однооименные css для них. А в вообще скинь ошики какие показывет FireBug легче было бы :)

  Mugik

14.07.09 11:41:27

одна ошибка, вот:

$.jgrid has no properties
jqGrid()(Object url=/admin/editcars datatype=json mtype=POST)grid.base.js (line 91)
(?)()()editcars (line 11)
F()()jQuery.js (line 19)
init()([function(), function()], function(), undefined)jQuery.js (line 12)
F()()jQuery.js (line 19)
F()()jQuery.js (line 19)
[Break on this error] }, $.jgrid.defaults, p || {});

  Ahiles

14.07.09 11:45:54

А что это за свойство такое $.jgrid --- ???? 

  Mugik

14.07.09 12:01:51

Не знаю, я только первый раз решил использовать jquery,и просто взял код написанный сверху. (подключил класс, и прописал в контроллере и виде).

из скриптов у меня подрубается ток это

<link href="&"quot;/jqGrid/themes/basic/grid.css" media="screen" rel="stylesheet" type="text/css" />
<link href="&"quot;/jqGrid/themes/jqModal.css" media="screen" rel="stylesheet" type="text/css" /><script type="text/javascript" src="/js/jQuery.js"></script>
<script type="text/javascript" src="/jqGrid/js/grid.base.js"></script>

  illusive

14.07.09 15:39:35

@Tolik

Дякую за примітку

  illusive

14.07.09 15:45:21

Ребята, пользуйтесь, пожалуйста, кнопкой вставка кода...

  Mugik

14.07.09 18:25:43

я все убрал, и просто подключил все файлы и посыпались ошибки

  Ahiles

15.07.09 03:56:50

А все - это что???

НАРОД, БУДЬТЕ ЛЮБЕЗНЫ, ХОТЬ ЭТОТ БЛОГ И НЕ МОЙ, НО У МЕНЯ ОГРОМНАЯ ПРОСЬБА, ЕСЛИ ВЫ ПРОСИТЕ О ПОМОЩИ, ТАК ПИШИТЕ ВОПРОСЫ РАЗВЕРНУТО, БОЛЕЕ ИНФОРМАЦИОННО, ЧТО БЫ МЫ НЕ СДЕЛИ И НЕ ДОГАНЯЛИ!!!!! 

  illusive

15.07.09 12:29:40

@Ahiles

Спасибо за понимание - у меня сейчас нет интернета, поэтому, дорогие читатели - извините, что мало общаюсь и помогаю Хмурый

  illusive

15.07.09 12:31:33

@Mugik

Проверьте какой ответ возвращает сервер при загрузке js файлов, возможно у Вас ошибка/недочет в файле .htaccess

  Максим

21.09.09 10:07:16

Привет! Хорошая статья, взял себе на заметку.

В коде в строке 132, твоего класса небольшая описка

было:

if (emptyempty($file)) return false; 

надо:

if (empty($file)) return false;


  illusive

22.09.09 00:58:55

Рад, что пригодилось Подмигивает

Спасибо за оЧепятку Смеётся

  Николай

08.12.09 12:09:52

Hi,

I have trying your code. But not displayed the grid. I think that is omit any row from code, who set loading of json response in grid. Please, where wrong?   

  illusive

08.12.09 12:15:35

Hi,

if you are using the latest, based on jquery.ui, jQuery Grid - my code will not work with this.

 

Versions greather than 3.4.4a of the jQuery Grid Plugin are not compatible with this code.

 

Sorry Улыбается

  Антон

07.01.10 22:46:37

Привет.

Использую jqgrid в zf практически также, как и ваша библиотека. Принцип работы идентечен на все 100%. Поскольку все же вопрос не совсем по адресу, оговорюсь - пишу в надежде на то, что кто-то с этим сталкивался.

Дело в том, что при первой загрузке экшна с таблицей, ответ от сервера приходит через 2-3 секунды. Причем судя по логам и профайлеру, запросы к базе и время выполнения самой функции в экшне ничтожно малы - 0.01 сек. Что происходит в эти 2 секунды  - непонятно.

После загрузки страницы, я нажимаю кнопочку "обновить" в самом гриде, проходит тот же самый запрос но уже за 0.2 секунды - все ок. Замеры времени выполнения не помогают - все говорит о том, что страница генерируется быстро.

При открытии страницы наблюдается еще и странное подвисание браузера (всех браузеров), на эти же 2 секунды. Фаербаг не показывает js-ошибок или 404, все запросы приходят с кодом 200.

Уже не знаю где искать ошибку.

Заранее спасибо за помощь.

  max.zloy

07.04.10 16:02:06

http://framework.zend.com/wiki/display/ZFPROP/ZendX_JQuery_Jqgrid+-+Jason+Lentink 
Пропосал вот уже лежит  

Оставить свой комментарий

 
Статьи | Портфолио | Друзья | Контакты
Идея и мозги: Васильев Андрей © 2008-2010 Web-Blog Кисточка и фантазия: Зелинский Богдан