Являясь большим поклонником продуктов компании 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()))); ?>
А как быть если не используются layots?