Question

SOLVED Thanks to @JPR and tuned-up thanks to @PeterM

/* The only dependance is when */ class NuSoap extends CApplicationComponent

v-Below, the initial question -v


I would like to know how to create a basic extenstion in yii 1.1.13 using nusoap 0.9.5? My simple code looks like this :

<?php 
require("libs/nusoap-0.9.5/lib/nusoap.php");
// namespace
$ns = "https://my-namespace-site";

// client
$client = new soapclient('https://ip-to-webservice-server');

// header
$headers = "<credentials><ns1:username xmlns:ns1=\"$ns\">username</ns1:username>
<ns2:password xmlns:ns2=\"$ns\">password</ns2:password></credentials>";
$client->setHeaders($headers);

// searching 
$params = array(
    'local_user_array' => array(
        'limit' => 10
    )
);
$result = $client->call('local_users_search', $params, $ns );
if( $client->getError() ) {
    echo $client->getError();
}
else {
        foreach( $result['data'] as $offer ) {
            echo "<div>".$offer['firstname']."</div>";
        }
    }
?>

My code works perfectly. Now, what coud I do to use $result in yii to be able to show results in a view?

The best answer will be a concrete example with file structure and code plus meaningful explanations.

Any help would be greatly appreciated. Thanks for your help in advance. I'm looking forward to it ;-)

PS: please do not reference any links to yiiframework site because it doesn't help much as I also know how to search.

Was it helpful?

Solution

Make a class that extends from CApplicationComponent.

class NuSoap extends CApplicationComponent 
{

    protected $params = array();
    protected $client, $ns;

    public function init() {
        require("libs/nusoap-0.9.5/lib/nusoap.php");
        $this->client = new soapclient('https://ip-to-webservice-server');
        $this->ns = "https://my-namespace-site";
    }

    public function getResults() {
        $results = $this->client->call(
            'local_users_search', 
            $this->params, 
            $this->ns 
        );
        return $results;
    }

    public function setParams(array $params) {
        $this->params = $params;
    } 

    // whatever other methods you need for it to work
}

Then in your main config file, under the components array:

 array(
    'nuSoap' => array(
        'class' => 'application.components.NuSoap' // name your class NuSoap.php
    )
    ......
)

Make sure the application/components or application/extensions directory is imported in the main.php config file as well. Put your class file in NuSoap.php in the application/components or applcation/extensions directory.

You can now refer to your component anywhere in your Yii app:

Yii::app()->nuSoap->setParams($params);
$results = Yii::app()->nuSoap->getResults();

This should be plenty to get you started in the right direction. The Yii documentation would be very helpful in understanding how application components work, but since you don't want to read it you'll just have to guess on some things. If you want to use Yii it makes absolutely no sense to avoid reading the documentation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top