Антон Шевчук // Web-разработчик

jQuery-PHP, AJAX и Zend Framework // PHP

jQuery-PHP, Ajax and Zend Framework

Как-то я уже рассказывал о библиотеке jQuery-PHP, и вот совсем недавно обнаружил, что она идеально сочетается с Zend Framework’ом.

Дабы сильно не закапываться, будет лучше всего привести пример реализации, начну с сервер-сайда, а именно со связки контроллера и экшена:

require_once 'Zend/Controller/Action.php';
/**
 * Ajax Controller
 */
class AjaxController extends Zend_Controller_Action
{
    /**
     * index Action
     * @return void
     */
    public function indexAction()
    {
        // check is AJAX request or not
        if (!$this->getRequest() -> isXmlHttpRequest()) {
             $this->getResponse()-> setHttpResponseCode(404)
                                 -> sendHeaders();
            $this->renderScript('empty.phtml');
            return false;
        }
        // requery php library
        require_once 'jQuery.php';
        // assign to div with id = 'test' current time
        jQuery('div#test')->html(date('H:i:s'));
    }
}

Чуть-чуть поясню – в первом условии проверяется действительно ли запрос осуществлен посредством AJAX’a, далее подключаем библиотеку jQuery и юзаем её.

Шаблон index.phtml для описанного выше экшена будет выглядеть следующим образом:

    require_once 'jQuery.php';
    // only jQuery response, nothing more
    jQuery::getResponse();

Еще нам понадобиться внести изменения в клиентскую часть, а именно подключить библиотеку в контроллере который нуждается в AJAX’е, к примеру так:

$this->view->headScript()->appendFile('/public/js/jquery.js');
$this->view->headScript()->appendFile('/public/js/jquery.php.js');

И непосредственно добавить вызов функции $.php({},{}) для какого-либо события:

<a href="#" onclick="javascript:$.php('<?php echo $this->Url(array('controller'=>'ajax', 'action'=>'index'));?>',{});return false;">click me</a>;

Как видите, можно перенаправить запрос на любой модуль, контроллер и экшен (см. описание хэлпера Url), а так же передать данные через GET или POST (второй параметр функции $.php как раз для этого и предназначен).

© Антон Шевчук 2007-2023