jQuery-PHP обновление до версии 0.8

Categories: JavaScript, PHP

Список изменений в версии 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.

Другие посты на эту тему

4 Responses to “jQuery-PHP обновление до версии 0.8”

  1. ну ZendX это все же Zend Extensions

  2. dabogee

    возник вопрос применительно к 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 …

  3. dabogee

    так и сделал…
    Жду обновления библиотеки :)

Copyright © 2007-2010, Anton Shevchuk. Powered by WordPress