Phpxcore:php4:newmodule:xajax

Материал из phpXCoreWiki.

Перейти к: навигация, поиск

Back

Содержание

[править] Назначение

Xajax - библиотека для реализации AJAX


[править] Конфигурация

Настройка конфигурационного файла modules.run.xml:\\

<module_name>
    <run>
        <.../>
        <xajax>MyXajax</xajax>
        <.../>
    </run>
</module>


[править] Реализация

Class Xajax наследуется от XModuleXajax, и следовательно Вы можете обращаться к следующим переменным:

  • $this->active_user - активный пользователь (объект типа XUser)
  • $this->modules_run - массив с конфигурационного файла modules.run.xml для данного модуля
  • $this->module_config - конфиг текущего модуля
  • $this->module_path - директория текущего модуля
  • $this->request - request

Пример класса:

/**
 * Class MyXajax
 * 
 * @access   public
 * @package  MyXajax
 * @created  Wed Apr 12 16:37:49 EEST 2006
 */
class MyXajax extends XModuleXajax 
{
    /**
     * Active user 
     * @type XUser
     */
    var $active_user;
 
    /**
     * modules.run.xml
     * @type array
     */
    var $modules_run;
 
    /**
     * module config
     *
     * @var string
     */
    var $module_config;
 
    /**
     * module path
     * @type string
     */
    var $module_path;
 
/*
  Все необходимые файлы инклудим в методе run или используя конфиг модуля и autoinit
*/
    /**
     * run
     */
    function run () 
    {    	
        /* All includes files in this method */
        // include_once 'something.php';
    }
 
/*
  ...
  Описываем необходимые методы, 
  допускается обращения к $this, работа с методами осуществляется не через статику;
  если есть необходимость проверки прав на использования методов - используем как в примере
  ...
*/
     /**
      * test
      * @access  public
      * @param   string $new_value
      */
     function test($new_value, $id) 
     {
         // Check admin permission
	if (!$this->checkSecurityAdmin()) {
	    return $this->returnError('Permission denied');
	}
 
         // Check user permission
	if (!$this->checkSecurityUser()) {
	    return $this->returnError('Permission denied');
	}
 
         // Instantiate the xajaxResponse object
         $objResponse = new xajaxResponse();
 
         $new_value += 10;
 
         $objResponse->assign($id, "innerHTML", $new_value);
 
         //return the xajaxResponse object
         return $objResponse;
     }
 
}


[править] Использование

Схема использования:

xxajax_lock();  // если есть необходимость в блокировке
xajax_run('ИМЯ_МОДУЛЯ', 'ИМЯ_МЕТОДА', 'ПАРАМЕТР1', 'ПАРАМЕТР2', ...);

Пример:

<div id='system'></div>
<a href="#" onclick="xxajax_lock(); xajax_run('MyModule', 'test', '100', 'system'); return false;">


[править] Debug

Для дебага вашего кода вы можете применять следующие приёмы:

1. - Использование буфера + метода returnDump($aData)

ob_start();
// тут ваш код, который может вызвать ошибку
// ...
// ...
$ob = ob_get_contents();
ob_end_clean();
 
return $this->returnDump($ob);

2. - Использование FireFox + плагин FireBug

123