
Список изменений в версии 0.8 не велик, но он порадует поклонников Zend Framework’a…
- Добавлен Action Helper – jQuery – теперь мы не ломаем философию ZF
- Добавлен View Helper – Ajax – ссылки генерировать стало проще
- Подогнал именование папок под ZF (libraries переименовал в library)
- Убрал error pop-up – заменен на div – ибо раздражал
- Обновил примеры (ибо много вопросов возникало)
Немного подробнее:
Сообщение с ошибкой теперь выглядет более цивильно:

Если в нем нет необходимости – то можно написать свой обработчик ошибок:
<script type="text/javascript">
php.error = function(xmlEr, typeEr, except) {}
</script>
А теперь десерт для любителей 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
*
* @access public
* @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:
<?php $this->headScript()->appendFile($this->baseUrl() . '/js/jquery.php.pack.js?ver=0.5'); ?>
<a href="#" <?php echo $this->Ajax(array('action'=>'ajax'), array('id'=>23), true)?> >Test Ajax</a>
<div id="test"></div>
Если же вы строите систему с поддержкой браузеров без JavaScript’a, то вполне вероятно у Вас будет что-то наподобие следующего:
/**
* ajaxAction
*
* @access public
* @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:
<?php $this->headScript()->appendFile($this->baseUrl() . '/js/jquery.php.pack.js?ver=0.5'); ?>
<a <?php echo $this->Ajax(array('action'=>'ajax'), array('id'=>23), true, true)?> >Test Ajax</a>
<div id="test"><?=$this->test?></div>
P.S Cсылка на бибилотеку – jQuery-PHP
P.P.S Почему ZendY – не знаю, но есть же ZendX…
This entry was posted
on Tuesday, November 25th, 2008 at 14:37 and is filed under JavaScript, PHP.
You can follow any responses to this entry through the RSS 2.0 feed.
Both comments and pings are currently closed.

ну ZendX это все же Zend Extensions
возник вопрос применительно к Zend’у используя jQuery-PHP:
задача: сделать переадресацию по результату работы скрипта ajaxAction().. т.е. либо редиректить внутри скрипта (надо в другой контроллер) либо передавать в функцию success и там делать windows.location = ‘кудато’
т.е. где внутри PHP скрипта присваивается переменная data, которая потом идет в success и как оформить редирект в том же скрипте.
интрересуют оба варианта??!!
пример запроса
function formSubmit(){ var params = $("#taskform").serialize(); $.php( '<?php echo $this->url(array('action' =>'validaterssform'),'ajax')?>', params, php.complete = function (data){ alert(data.SOMETHING); } ); }Для Вашей задачи подойдет использование функции evalScript, но это конечно не самый лучший вариант – в следующей версии добавлю возможность передачи лишь переменных, которые можно будет обрабатывать в php.success …
так и сделал…
Жду обновления библиотеки :)