Zend Framework. ZendX_JQuery.

Являясь большим поклонником продуктов компании Zend, было понятно, что рано или поздно я попробую перейти на использование Zend Framework (ZF).

В один прекрасный момент меня подзадолбала связка Smarty + jQuery + PHP. Не то чтобы она мне не нравится, наоборот, я уже набил руку на создании приложений, используя именно эти языки. Но вот если перевести код, написанный с использованием своих библиотек и классов, на ZF не очень трудно, то с jQuery и Smarty вырисовывается совсем другая картина.

Smarty. Пробежавшись по моим текущим проектам, я понял, что где-то в 40% случаев приходится отключать кеширующие свойства Smarty. Так же 90% проектов — это сайты-визитки, где наплыв посетителей не превышает 1000 уникальных посетителей в день. По этому, без особого ущерба для производительности можно смело забить на smarty. Хотя бы на время адаптации к новому фреймворку…

jQuery. Тут ситуация совсем другая. От jQuery отказаться нельзя. Но как быть — оставить весь код нетронутым, или интегрировать jQuery в сам ZF. В документации к Zend Framework есть глава под названием ZendX_JQuery, которая рассказывает как интегрировать библиотеку в фреймворк. Попробуем разобраться.

Регистрируем хелпер и задаем всякие параметры (я это делаю в файле Bootstrap.php):

$view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
$view->Query()
     ->setLocalPath($view->BaseUrl()."/jquery/jquery-1.3.2.min.js")
     ->setUiVersion("1.7.2")
     ->setUiLocalPath($view->BaseUrl()."/jquery/jquery-ui-1.7.2.custom.min.js")
     ->addStylesheet($view->BaseUrl()."/css/jquery-ui-1.7.2.custom.css")
     ->uiEnable();

Что мы тут делаем. Дело в том, что по умолчанию будут использованы библиотеки с Google Ajax Library Content Distribution Network. А это не есть оптимально. Поэтому, мы указываем какие файлы использовать и где они находятся локально.

Теперь в файле макета (layout.phtml) мы добавляем следующую строчку:

    jQuery(); ?>

И, например, если надо будет создать поле, где выбирается дата, то можно будет это сделать вот так:

datePicker("dp1", '', array('defaultDate' => date('d M yy', time()))); ?>

2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *