Consumo y visualizacion de un web services en una vista

Buenos días comunidad,

Soy nuevo con el framework yii y estoy atorado con un tema.

Antecedente

Se contrato a dos desarrolladores para realizar una aplicación, usaron el framework YII, pero por contrato no tienen la responsabilidad de dar soporte, mantenimiento ni inducción sobre lo que hicieron.

Lo Solicitado

Se ha solicitado que dentro del formulario de registro, cuando el usuario escriba su DNI y cambie de casilla del formulario o de Enter, se realice la consulta a un Web Services(WS) que obtendrá la información del usuario según el DNI ingresado y retornará la información al formulario autocompletando los registros en los campos habilitados para el efecto. El WS recibe el DNI y retorna Nombres, Dirección, Estado Civil, estos valores se deben llenar en los textbox Nombres, Dirección y Estado Civil que están en el mismo formulario pero en estado disable.

El Problema

Se ha realizado dentro del controller una función de nombre actionConsumirwsrc()




<?php


namespace app\controllers;


use Yii;

use yii\helpers\Url;

use yii\helpers\Html;

use yii\web\UploadedFile;

use app\components\CController;

use app\models\MceFormularioTemp;

use app\models\Pais;

use app\models\Provincia;

use app\models\Canton;

use app\models\MceUsoMarca;

use app\models\Utilities;

use app\models\MceOtrosUsos;

use app\models\MceObjetivo;

use app\models\UploadForm;

use app\models\ExportFile;

use mPDF;


class MceformulariotempController extends CController {


    private $id_pais = 56; //Id Pertenece al Pais Ecuador

    

    .....

    

    /*

     * Añadido por George Lainez

     * Fecha: 20-06-2016

     * Función que permite consumir el WS de la Dinardap para el registro civil para mostrar datos en el formulario

     */   

    public function actionConsumirwsrc()

    {

      $p_cedula =isset($_GET['valor'])?$_GET['valor']:'';


      $parametros=array();

      //$parametros[numeroIdentificacion] = "0922464656";

      $parametros[numeroIdentificacion] = $p_cedula;

      $parametros[codigoPaquete] = "171";

      /*

       * Usuario y contraseña de WebServices de Dinardap

       */

      

      try{

            $client = new SoapClient("DIR_WEB_SERVICES", array('login'    => "USR",

                                                                                                               'password' => "PWD")

                                    );


            /*

             * El codigo de paquete 171 corresponde al Registro Civil

            */

            $result = $client->getFichaGeneral( $parametros);


            $arreglo = array();

            $arreglo = $result->return->instituciones->datosPrincipales;

            $resultadoWS = array(

                "nombre"          => $resultadoWS[0]=$arreglo->registros[1]->valor ,//Nombre

                "apellido"        => $resultadoWS[0]=$arreglo->registros[1]->valor ,//Apellido

                "genero"          => $resultadoWS[1]=$arreglo->registros[2]->valor ,//Genero

                "fechanacimiento" => $resultadoWS[2]=$arreglo->registros[3]->valor ,//fechaNacimiento

                "nacionalidad"    => $resultadoWS[3]=$arreglo->registros[4]->valor ,//nacionalidad

                "domicilio"       => $resultadoWS[4]=$arreglo->registros[5]->valor //domicilio

            );


            return $this->render('_form_tab1', [

                                                //"solicitud"=> base64_encode(json_encode($solicitud)),

                                                "nombre"          => $resultadoWS[0]=$arreglo->registros[1]->valor ,//Nombre

                                                "apellido"        => $resultadoWS[0]=$arreglo->registros[1]->valor ,//Apellido

                                                "genero"          => $resultadoWS[1]=$arreglo->registros[2]->valor ,//Genero

                                                "fechanacimiento" => $resultadoWS[2]=$arreglo->registros[3]->valor ,//fechaNacimiento

                                                "nacionalidad"    => $resultadoWS[3]=$arreglo->registros[4]->valor ,//nacionalidad

                                                "domicilio"       => $resultadoWS[4]=$arreglo->registros[5]->valor //domicilio

                                              ]);

            

         }

      catch(Exception $e) 

      {

        return $this->render('_form_tab1', [


                                                "nombre"          => "Error" ,//Nombre

                                                "apellido"        => "Error" ,//Apellido

                                                "genero"          => "Error" ,//Genero

                                                "fechanacimiento" => "Error" ,//fechaNacimiento

                                                "nacionalidad"    => "Error" ,//nacionalidad

                                                "domicilio"       => "Error" //domicilio

                                              ]);

      } 

    }

    

  

}



Este controlador es llamado desde la vista _form_tab1 mediante ajax, para ello dentro de _form_tab1 se ha creado una sección javascript con el siguiente código:




<script language="javascript">

  function consultaWSrc()

  {


                alert('HOLA 1');


                if($('#txt_ftem_cedula').val().length == 10 )

                {

                    alert('HOLA 2');

                    $.ajax({

                            type: "GET",

                            url:  '<?php echo(Yii::$app->urlManager->createUrl('mceformulariotemp/Consumirwsrc')); ?>',

                            

                            data: {

                                    valor: $('#txt_ftem_cedula').val()

                                  },

                            success: function(valor)

                            {

                                alert(valor)

                                if(valor!=0)

                                {

                                    var res="";

                                    res=jQuery.parseJSON(data);

                                    $('#txt_ftem_nombre').val(res.nombre);

                                    $('#txt_ftem_apellido').val(res.apellido);

                                    $('#rep_legal').val(res.genero);

         

                                }

                            },

                            error: function(valor) 

                            { 

                                alert("Error occured.please try again:"+valor);

                            }

                            

                    })




                }else

                {

                    alert('La cédula ingresada no existe! 2');

                }

    }

</script>  



Y esta función se está llamando en el textbox DNI de _form_tab1 de la siguiente forma





...


<div class="col-md-6">

    <div class="form-group">

        <label for="txt_ftem_cedula" class="col-sm-3 control-label"><?= Yii::t("formulario", "DNI") ?></label>

        <div class="col-sm-9">

            <input onchange="return consultaWSrc();" type="text" maxlength="10" class="form-control PBvalidation keyupmce" id="txt_ftem_cedula" data-type="cedula" data-keydown="true" placeholder="<?= Yii::t("formulario", "National identity document") ?>">

        </div>

    </div>

</div>


....




Al cargar el formulario en la web y escribir el DNI sale el siguiente error en el inspeccionador de elementos




PHP Fatal Error 'yii\base\ErrorException' with message 'Cannot use object of type yii\web\NotFoundHttpException as array' 


in C:\wamp\www\mce\components\CController.php:56


Stack trace:

#0 C:\wamp\www\mce\components\CController.php(40): yii\base\Controller->runAction()

#1 C:\wamp\www\mce\vendor\yiisoft\yii2\base\Module.php(454): app\components\CController->runAction()

#2 C:\wamp\www\mce\vendor\yiisoft\yii2\web\ErrorHandler.php(93): yii\base\Module->runAction()

#3 C:\wamp\www\mce\vendor\yiisoft\yii2\base\ErrorHandler.php(109): yii\web\ErrorHandler->renderException()

#4 {main}



Le he dado la vuelta y practicamente he hecho todos los ejemplo que he visto hasta ahora, estoy investigando del tema desde hace dos semanas y por eso recien me animo a escribir en este foro.

Espero me puedan ayudar.

PD: Si son de Ecuador podríamos conversar sobre este cambio y cuales serían sus honorarios.