Список змін у версії 0.8 не великий, але він порадує шанувальників Zend Framework’a…

  • Додано Action Helper – jQuery – тепер ми не ламаємо філософію ZF
  • Додано View Helper – Ajax – посилання генерувати стало простіше
  • Підігнав іменування папок під ZF (libraries перейменував у library)
  • Прибрав error pop-up – замінений на div – бо дратував
  • Оновив приклади (бо багато питань виникало)

Трохи докладніше:

Повідомлення з помилкою тепер виглядає більш цивільно:

Якщо в ньому немає необхідності можна написати свій обробник помилок:

php.error = function(xmlEr, typeEr, except) {}

А тепер десерт для любителів Zend Framework’a

Для роботи з ZF нам потрібно підключити хелпери – для цього зробимо кілька змін в bootstrap’е:

// додамо шлях до нашого View Helper’у
require_once ‘Zend/Layout.php’;
$layout = Zend_Layout::startMvc($config->layout);
$layout->getView()->addHelperPath(APPLICATION_PATH . ‘/../library/ZendY/JQuery/View/Helper’, ‘ZendY_JQuery_View_Helper_’);
// підключимо Action Helper
require_once ‘Zend/Controller/Action/HelperBroker.php’;
Zend_Controller_Action_HelperBroker::addPrefix(‘ZendY_JQuery_Controller_Action_Helper’);

Тепер можна використовувати хелпер jQuery в контролері:

/**
* ajaxAction
*
* @public access
* @created Tue Jun 10 17:50:24 EEST 2008
*/
public function ajaxAction()
{
// ініціалізуємо Jquery action helper – обов’язково
$this->_helper->getHelper(‘Jquery’);
// перевіряємо, що це XML HTTP Request, якщо немає – форвард на вказаний екшен
if ($this->_helper->getHelper(‘Jquery’)->error(‘error’, ‘error’)) {
// forward to Error Controller, Error Action
return false;
}
// призначаємо div з id = ‘test’ поточний час
jQuery(‘div#test’)->html(date(‘H:i:s’));
// віддаємо те що у нас вийшло – обов’язково
$this->_helper->getHelper(‘Jquery’)->sendResponse();
}

Звертаємося до даного екшену використовуючи наступну запис під view:

headScript()->appendFile($this->baseUrl() . ‘/js/jquery.php.pack.js?ver=0.5’); ?>
‘ajax’), array(‘id’=>23), true)?> >Test Ajax

Якщо ж ви будуєте систему з підтримкою браузерів без JavaScript’a, то цілком ймовірно у Вас буде щось на зразок наступного:

/**
* ajaxAction
*
* @public access
* @created Tue Jun 10 17:50:24 EEST 2008
*/
public function ajaxAction()
{
// перевіряємо це AJAX запит чи ні
if (!$this->getRequest()->isXmlHttpRequest()) {
$this->view->test = date(‘H:i:s’);
} else {
// ініціалізуємо Jquery action helper – обов’язково
$this->_helper->getHelper(‘Jquery’);
// призначаємо div з id = ‘test’ поточний час
jQuery(‘div#test’)->html(date(‘H:i:s’));
// віддаємо те що у нас вийшло – обов’язково
$this->_helper->getHelper(‘Jquery’)->sendResponse();
}
}

І view:

headScript()->appendFile($this->baseUrl() . ‘/js/jquery.php.pack.js?ver=0.5’); ?>
‘ajax’), array(‘id’=>23), true, true)?> >Test Ajax
test?>

P. S Посилання на бибилотеку – jQuery-PHP
P. P. S Чому ZendY – не знаю, але є ж ZendX…