tsigularov/yii2-asset-xajax

适用于yii2框架的Xajax

dev-master 2018-01-10 10:55 UTC

This package is not auto-updated.

Last update: 2024-09-21 16:30:52 UTC


README

适用于yii2框架的Xajax

安装

composer require tsigularov/yii2-asset-xajax @dev

创建资产文件 @assets/XajaxAsset.php

namespace app\assets;

use Yii;
use yii\web\AssetBundle;
use yii\web\View;


class XajaxAsset extends AssetBundle
{
    public $sourcePath = '@vendor/tsigularov/yii2-asset-xajax/assets';

    public $js = [
//        'js/xajax_core.js',
    ];
}

创建组件文件 @app/components/XajaxComponent

namespace app\components;

use app\assets\XajaxAsset;
use \Yii;
use app\modules\warehouse\components\Url;
use yii\web\YiiAsset;

class XajaxComponent extends \yii\base\Component
{
    public $xajax_string;

    public $xajax_load = false;

    public function init()
    {

    }
    public function start($params){

        require_once Yii::getAlias('@vendor/tsigularov/yii2-asset-xajax/src/xajaxAIO.inc.php');
        $this->xajax_string = new \xajax();

        foreach ($params as $val) {
            $this->xajax_string->registerFunction(array($val[0], &$val[1], $val[2]));
        }


        $this->xajax_string->configure('debug', false);


        $this->xajax_string->configure('characterEncoding', 'utf-8');
        $this->xajax_string->configure('decodeUTF8Input', true);
        $this->xajax_string->configure('cleanBuffer', true);

        $this->xajax_load = true;

        $this->xajax_string->processRequest();

    }

    public function printJavascript()
    {
        if ($this->xajax_load) {
            $this->xajax_string->printJavascript(Yii::$app->view->assetBundles[XajaxAsset::className()]->baseUrl."/js/");
        }
    }
}

在项目中的任何控制器中启动xajax组件

    public function init()
    {
        $params = array();
        $params[] = array("callBack",$this,"callBack");
        Yii::$app->xajax->start($params);
    }

在同一个控制器中添加回调函数

    public function callBack(){
        $response = new \xajaxResponse();

	$response->alert('This call back from server');

        return $response;
    }

在项目的header中添加打印函数,例如 @view/header

   Yii::$app->xajax->printJavascript();