Mostar deficion de servicios WSDL

Buenas noches, una consulta y espero que me puedan ayudar estoy usando servicios y necesito la deficion de un servicios especifico pero no se como acceder al mismo, tengo la siguiente estructura:

SiteController.php




/**

	* @param string uname

	* @return string 

	* @soap

	*/

	    public function getExisteMateria($uname)

	    {

			

			$evaluacion = Yii::app()->db->createCommand("SELECT nombre_mat, descripcion, fecha_comienzo, fecha_fin, status, id_departamento, id_materia ".

			"FROM materia ".

			"WHERE nombre_mat ='".$uname."'")->queryAll();

			if($evaluacion)

				$result ='SI';

			else $result ='NO';

			

	        return $result;

	    }




Micliente.php




  class MiCliente extends CApplicationComponent

{

	

    private $client = null;

    public $ws_url;


    private function getClienteInt(){

    

        if($this->client == null)

        {

            // para que reconozca nuevas funciones del WS que vayas creando

            

            ini_set ( 'soap.wsdl_cache_enable' , 1);

			ini_set ( 'soap.wsdl_cache_ttl' , 3600 );

			error_log('Llene el cliente ');

            $this->client = new SoapClient('localhost/example/index.php/site/ws/');

            echo $this->client->getData("hallo");

            

			error_log('salio el cliente ');

			

        }else error_log('Cliente no NULL ');

        return $this->client;

    }

 public function existeMateria($uname){

		error_log('Username: '.$uname);

		return $this->getClienteInt()->getExisteMateria($uname);

	}}




Cuando ingreso en la url localhost/example/index.php/site/ws/existemateria me imprime todos los servios




<definitions name="SiteController" targetNamespace="urn:SiteControllerwsdl"><wsdl:message name="getObtenerMensajeRemotoRequest"><wsdl:part name="argX" type="xsd:string"/></wsdl:message><wsdl:message name="getObtenerMensajeRemotoResponse"><wsdl:part name="return" type="xsd:string"/></wsdl:message><wsdl:message name="getExisteLoginRequest"><wsdl:part name="uname" type="xsd:string"/></wsdl:message><wsdl:message name="getExisteLoginResponse"><wsdl:part name="return" type="xsd:string"/></wsdl:message><wsdl:message name="getExisteMateriaRequest"><wsdl:part name="uname" type="xsd:string"/></wsdl:message><wsdl:message name="getExisteMateriaResponse"><wsdl:part name="return" type="xsd:string"/></wsdl:message><wsdl:message name="getExistePensumRequest"><wsdl:part name="id" type="xsd:string"/></wsdl:message><wsdl:binding name="SiteControllerBinding" type="tns:SiteControllerPortType"><soap:binding style="rpc" transport=" schemas.xmlsoap.org/soap/http"/><wsdl:operation name="getObtenerMensajeRemoto"><soap:operation soapAction="urn:SiteControllerwsdl#getObtenerMensajeRemoto" style="rpc"/><wsdl:input><soap:body use="encoded" namespace="urn:SiteControllerwsdl" encodingStyle="

schemas.xmlsoap.org/soap/encoding/"/></wsdl:input><wsdl:output><soap:body use="encoded" namespace="urn:SiteControllerwsdl" encodingStyle="schemas.xmlsoap.org/soap/encoding/"/></wsdl:output></wsdl:operation><wsdl:operation name="getExisteLogin"><soap:operation soapAction="urn:SiteControllerwsdl#getExisteLogin" style="rpc"/><wsdl:input><soap:body use="encoded" namespace="urn:SiteControllerwsdl" encodingStyle="schemas.xmlsoap.org/soap/encoding/"/></wsdl:input><wsdl:output><soap:body use="encoded" namespace="urn:SiteControllerwsdl" encodingStyle="schemas.xmlsoap.org/soap/encoding/"/></wsdl:output></wsdl:operation><wsdl:operation name="getExisteMateria"><soap:operation soapAction="urn:SiteControllerwsdl#getExisteMateria" style="rpc"/><wsdl:input><soap:body use="encoded" namespace="urn:SiteControllerwsdl" encodingStyle=" schemas.xmlsoap.org/soap/encoding/"/></wsdl:input>!peration></wsdl:binding><wsdl:service name="SiteControllerService"><wsdl:port name="SiteControllerPort" binding="tns:SiteControllerBinding"><soap:address location="localhost/gestioncurricular/index.php/site/ws?ws=1"/></wsdl:port></wsdl:service></definitions>



Solo quiero la deficion del servicio ExisteMateria.Alguna idea?

Gracias

Buenas.

Creo que te estás liando un poco.

En el código que has puesto no existe ningún servicio web llamado ExisteMateria. De hecho, la única función que forma parte de un servicio web es getExisteMateria del archivo SiteController.php. Entonces entiendo que el único servicio que tienes definido es Site, y todo lo que esté dentro de tu servicio web Site se te vá a imprimir.

De hecho, es lo que está pasando. La primera línea del xml que muestras es :




<definitions name="SiteController" targetNamespace="urn:SiteControllerwsdl">



Y la última:




</definitions>



Con lo que el funcionamiento es correcto.

Si quieres un WS aparte que se llame ExisteMateria tendrás que crear el archivo ExisteMateriaController.php e indicar que es un WS.

Por si quieres revisarlo : Yii WS

Un saludo.