繁体   English   中英

如何使用Codeigniter Webservice-Nusoap Server加载模型?

[英]How to load model with Codeigniter Webservice - Nusoap Server?

我正在尝试将模型加载到Web服务(Nusoap),如下所示:

控制器:

class Addition extends CI_Controller{
public function Addition(){
    parent::__construct();
    $ns = base_url().'addition/';
    $endpoint = base_url().'addition/';
    $this->load->library("nusoap_library"); // load nusoap toolkit library in controller
    $this->nusoap_server = new soap_server(); // create soap server object
    $this->nusoap_server->configureWSDL("SMS SOAP", $ns, $endpoint); // wsdl cinfiguration
    $this->nusoap_server->wsdl->schemaTargetNamespace = $ns; // server namespace

    // REGISTER FUNCTIONS
    $input_array = array ('var1' => "xsd:string", 'var2' => "xsd:string"); // "addnumbers" method parameters
    $return_array = array ("var3" => "xsd:int", 'var4' => "xsd:string");
    $this->nusoap_server->register('send', $input_array, $return_array, "urn:SOAPServerWSDL", "urn:".$ns."send", "rpc", "encoded", "My Addition WS");
}

function index(){
    function send($var1, $var2){
        $this->load->model('mymodel'); // THIS IS MY MODEL

        $data['var1'] = $this->mymodel->addnumbers($var1, $var2);
        $data['var2'] = "yes";

        return $data;
    }

    $this->nusoap_server->service(file_get_contents("php://input"));
}

}

问题是,如果我取出模型并直接添加,它将可以正常工作,但是对于模型,它什么也不返回。

任何帮助将不胜感激。

我想我解决了自己的问题。

显然,您不能直接调用模型。 一种实现方法如下:

class Addition extends CI_Controller{
    public function Addition(){
    parent::__construct();
    $ns = base_url().'addition/';
    $endpoint = base_url().'addition/';
    $this->load->library("nusoap_library"); // load nusoap toolkit library in controller
    $this->nusoap_server = new soap_server(); // create soap server object
    $this->nusoap_server->configureWSDL("SMS SOAP", $ns, $endpoint); // wsdl cinfiguration
    $this->nusoap_server->wsdl->schemaTargetNamespace = $ns; // server namespace

    // REGISTER FUNCTIONS
    $input_array = array ('var1' => "xsd:string", 'var2' =>  "xsd:string"); // "addnumbers" method parameters
    $return_array = array ("var3" => "xsd:int", 'var4' => "xsd:string");
    $this->nusoap_server->register('send', $input_array, $return_array, "urn:SOAPServerWSDL", "urn:".$ns."send", "rpc", "encoded", "My Addition WS");
}

function index(){
    function send($var1, $var2){
        $CI =& get_instance();
        $CI->load->model('mymodel'); // THIS IS MY MODEL

        $data['var1'] = $CI->mymodel->addnumbers($var1, $var2);
        $data['var2'] = "yes";

        return $data;
    }

    $this->nusoap_server->service(file_get_contents("php://input"));
}

我知道这可能不是最佳解决方案,但它可以完美工作,并且您可以使用带有Nusoap的Codeigniter Framework加载任何模型。

希望这对将来有所帮助。

如果有人有更好的方式加载模型,请告诉我们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM