Yii Framework Forum: Dudas sobre trabajo con modulos - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Dudas sobre trabajo con modulos Necesidad de informacion para errores generados Rate Topic: -----

#21 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted 16 June 2017 - 09:54 AM

View Postlagogz, on 16 June 2017 - 08:10 AM, said:

Buenas de nuevo Rafael.

Tienes mal el import de components de los módulos facturación y producción. Lo tienes así:

'application.modules.facturacion.components*',
'application.modules.produccion.components*',


Como ves, faltan puntos. Debería ser así:

'application.modules.facturacion.components.*',
'application.modules.produccion.components.*',


Así debería cogerte la clase. Lo que sí que no entiendo es pq no te encuentra la clase CController. Cómo haces el debug?

Un saludo.

Buenas lagogz, en realidad no se lo que pasa, lo puse como lo sugeriste y sigue igual, te comento que antes de poner los modulos estas cosas trabajaban bien.
0

#22 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted 16 June 2017 - 03:48 PM

View Postrafaelrosales, on 16 June 2017 - 09:54 AM, said:

Buenas lagogz, en realidad no se lo que pasa, lo puse como lo sugeriste y sigue igual, te comento que antes de poner los modulos estas cosas trabajaban bien.

Gracias por responder, ya el problema que me queda es que no carga los resultados de los segundos combos dependientes, ni los cuadros textos dependientes de otro, aunque no genera errores, aunque en el debug si los muestra, parece paradógico pero es asi, ya arriba puse estas imagenes vacias y al ir al d4ebug si veo los resultados.
Aclaro en que en el form utilizo una funcion javascrip para obtener los datos, es esta:
<script type="text/javascript">
	$(function() {
	//Add, Save, Edit and Delete functions code
	$(".btnEdit").on("click", Edit);
        	$(".btnDelete").on("click", Delete);
        	$("#btnAdd").on("click", Add);
        	ActualizarCodigo();
        	//  var_dump('hasta aquí llego');
        	//   exit;
        	$.ajax({
   		// 'url' = > Yii::app() - > createUrl('/facturacion/datosrecepcion/actualizarCombos'),
            	url: 'index.php?r=/facturacion/datosrecepcion/actualizarCombos',
                	type: 'POST',
                	dataType: 'json',
                	data: {
                	"idCod": $('#Datosrecepcion_CodUEB').val()
                	},
                	success: function(data) {
                	$("#Datosrecepcion_CIFac").html(data.nfacturador);
                        	$("#Datosrecepcion_CIEnt").html(data.entrega);
                	}
        	});
        	$.ajax({
      	//  'url' = > Yii::app() - > createUrl('/facturacion/datosrecepcion/actualizarDestino'),
             		url: 'index.php?r=/facturacion/datosrecepcion/actualizarDestino',
                	type: 'POST',
                	dataType: 'json',
                	data: {
                	"idCodent": $('#Datosrecepcion_Codentrada').val()
                	},
                	success: function(data) {
                	$("#Datosrecepcion_Codde").html(data.destinoEntrada);
                	}
        	});
	});
        	function Add() {
        	if ($('#producto').val() !== '') {
        	var codigo = $('#incodigo').val() === '' ? '0' : $('#incodigo').val();
                	var cantidad = $('#incantidad').val() === '' ? '0' : $('#incantidad').val();
                	$("#tblData tbody").append(
                	"<tr class='even'>" +
                	"<td>" + codigo + "</td>" +
                	"<td>" + $('#producto').val() + "</td>" +
                	"<td>" + cantidad + "</td>" +
                	"<td><img src='images/update.png' class='btnEdit' title='Actualizar' style='cursor:pointer'>	<img src='images/delete.png' class='btnDelete' title='Eliminar' style='cursor:pointer'/></td>" +
                	"</tr>");
                	$(".btnEdit").off("click");
                	$(".btnDelete").off("click");
                	$(".btnEdit").on("click", Edit);
                	$(".btnDelete").on("click", Delete);
                	document.getElementById('incantidad').value = '';
                	$('#incodigo').val("");
                	$('#producto').val("");
                	ActualizarCodigo();
        	}
        	else {
        	alert('Debe introducir un producto');
        	}
        	};
        	var oldCantidad;
        	function Edit() {
        	var par = $(this).parent().parent(); //tr
                	var tdCantidad = par.children("td:nth-child(3)");
                	var tdButtons = par.children("td:nth-child(4)");
                	oldCantidad = tdCantidad.html();
                	tdCantidad.html("<input type='text' id='txtCantidad' value='" + tdCantidad.html() + "'/>");
                	tdButtons.html("<img src='images/save.png' class='btnSave' title='Guardar' style='cursor:pointer'/>	<img src='images/cancel.gif' class='btnCancel' title='Cancelar' style='cursor:pointer'/>");
                	$(".btnEdit").off("click");
                	$(".btnDelete").off("click");
                	$(".btnSave").on("click", Save);
                	$(".btnCancel").on("click", Cancel);
                	$(".btnEdit").on("click", Edit);
                	$(".btnDelete").on("click", Delete);
        	}
	;
        	function Save() {
        	var par = $(this).parent().parent(); //tr
                	var tdCantidad = par.children("td:nth-child(3)");
                	var tdButtons = par.children("td:nth-child(4)");
                	tdCantidad.html(tdCantidad.children("input[type=text]").val());
                	tdButtons.html("<img src='images/update.png' class='btnEdit' title='Actualizar' style='cursor:pointer'/>	<img src='images/delete.png' class='btnDelete' title='Eliminar' style='cursor:pointer'/>");
                	$(".btnEdit").off("click");
                	$(".btnDelete").off("click");
                	$(".btnEdit").on("click", Edit);
                	$(".btnDelete").on("click", Delete);
        	}
	;
        	function Cancel() {
        	var par = $(this).parent().parent(); //tr
                	var tdCantidad = par.children("td:nth-child(3)");
                	var tdButtons = par.children("td:nth-child(4)");
                	tdCantidad.html(oldCantidad);
                	tdButtons.html("<img src='images/update.png' class='btnEdit' title='Actualizar' style='cursor:pointer'/>	<img src='images/delete.png' class='btnDelete' title='Eliminar' style='cursor:pointer'/>");
                	$(".btnEdit").off("click");
                	$(".btnDelete").off("click");
                	$(".btnEdit").on("click", Edit);
                	$(".btnDelete").on("click", Delete);
        	}
	;
        	function Delete() {
        	var par = $(this).parent().parent(); //tr
                	$('#producto')
                	.append($("<option></option>")
                        	.attr("value", par.children("td:nth-child(1)").html())
                        	.text(par.children("td:nth-child(2)").html()));
                	ActualizarCodigo();
                	par.remove();
        	}
	;
        	function ActualizarCodigo() {

        	$('#incodigo').val($('#producto option:selected').val());
        	}
	;
        	$('#datosrecepcion-form').live('submit', function() {

	var tbl = $('#tblData tbody tr').map(function() {
	var row = $(this);
        	return {producto: row.find(':nth-child(1)').text(),
                	cantidad: row.find(':nth-child(3)').text(),
        	};
	}).get();
        	$.ajax({
     		//'url' = > Yii::app() - > createUrl('/facturacion/datosrecepcion/salvarRecepcion'),
        	url: 'index.php?r=/facturacion/datosrecepcion/salvarRecepcion',
                	type: 'POST',
                	dataType: 'text',
                	data: {"detalle": tbl,
                        	"idn": $('#Datosrecepcion_Idn').val(),
                        	"fecha": $('#Datosrecepcion_Fecha').val(),
                        	"codueb": $('#Datosrecepcion_CodUEB').val(),
                        	"idestado": $('#Datosrecepcion_IdEstado').val(),
                        	"cifac": $('#Datosrecepcion_CIFac').val(),
                        	"nvale": $('#Datosrecepcion_nvale').val(),
                        	"codde": $('#Datosrecepcion_Codde').val(),
                        	"cient": $('#Datosrecepcion_CIEnt').val(),
                        	"codprovedor": $('#Datosrecepcion_CodProvedor').val(),
                        	"ci": $('#Datosrecepcion_CI').val(),
                        	"codentrada": $('#Datosrecepcion_Codentrada').val(),
                        	"1": $('#Datosrecepcion_CodDoc').val(),
                        	"modelid": $('#modelid').val()
                	},
                	success: function(data) {
                	if (data === 'fail')
                        	alert('Ya existe un registro con ese número consecutivo');
                        	else
                        	window.location.href = 'index.php?r=datosrecepcion/admin';
                	}
        	});
        	return false;
	});
</script>

0

#23 User is offline   lagogz 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 702
  • Joined: 30-November 12
  • Location:Galiza

Posted 19 June 2017 - 07:51 AM

View Postrafaelrosales, on 16 June 2017 - 03:48 PM, said:

Gracias por responder, ya el problema que me queda es que no carga los resultados de los segundos combos dependientes...


Y cómo conseguiste que te cargase los componentes?

Respecto a tu última duda, si el procedimiento llega a la función success de tu javascript, puedes probar a hacer un console.log(data) en esa función a ver si te devuelve los datos que tú esperas (los prodrás ver en la consola del navegador), y si tienen el nombre que tú esperas. A mi me suena que el problema puede ser que los controles tengan ids diferentes a los q especificas en tu Jvascript.

Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#24 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted 19 June 2017 - 12:57 PM

[quote name='rafaelrosales' timestamp='1497646127' post='310307']
Gracias por responder, ya el problema que me queda es que no carga los resultados de los segundos combos dependientes, ni los cuadros textos dependientes de otro, aunque no genera errores, aunque en el debug si los muestra, parece paradógico pero es asi, ya arriba puse estas imagenes vacias y al ir al d4ebug si veo los resultados.
Aclaro en que en el form utilizo una funcion javascrip para obtener los datos, es esta:
<script type="text/javascript">
	$(function() {
	//Add, Save, Edit and Delete functions code
	$(".btnEdit").on("click", Edit);
        	$(".btnDelete").on("click", Delete);
        	$("#btnAdd").on("click", Add);
        	ActualizarCodigo();
        	//  var_dump('hasta aquí llego');
        	//   exit;
        	$.ajax({
   		// 'url' = > Yii::app() - > createUrl('/facturacion/datosrecepcion/actualizarCombos'),
            	url: 'index.php?r=/facturacion/datosrecepcion/actualizarCombos',
                	type: 'POST',
                	dataType: 'json',
                	data: {
                	"idCod": $('#Datosrecepcion_CodUEB').val()
                	},

0

#25 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted 19 June 2017 - 01:16 PM

Hola lagogz, gracias por responder, aqui muestro los resultados de una de las aciones al llamar el provedor en tres imagenes:
Imagen 1: es el resultado que se muestra al seleccionar la UEB el Alba y me muestra el segundo Combo vacio:
Posted Image
Imagen 2: es el resultado al hacer el debug, donde el idCodigo de la UEB El Alba
Posted Image
imagen 3: Muestra el resultado al debuguear donde se observa la respuesta con el Id y el Nombre de la persona que se debio mostrar en el segundo combo que no la muestra.
Posted Image
0

#26 User is offline   lagogz 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 702
  • Joined: 30-November 12
  • Location:Galiza

Posted 21 June 2017 - 04:17 AM

Buenas.

Es que para mi gusto os complicáis demasiado con las listas desplegables enlazadas.

Yo lo que hago es:

Vista:
echo CHtml::dropDownList(
                 'listProveedor',
                 'tuValor',        // O vacío, lo que quieras.
                 CHtml::listData(........),// Por ejemplo Proveedor::model()->findAll(),...
                 array(
                       'prompt' => 'Seleccione Proveedor',
                       'ajax' => array(
                                      'type'=>'POST',
                                      'url'=>Yii::app()-> createUrl('/facturacion/datosrecepcion/actualizarCombos'), 
                                      'update'=>'#listFacturador',
                                      )));

echo CHtml::dropDownList(
                 'listFacturador',
                 'tuValor',        // O vacío, lo que quieras.
                 array(),          // O cargas datos relacionados con la lista padre.
                 array(
                       'prompt' => 'Seleccione Facturador'
                       ));


Controlador:
public function actionActualizarCombos()
{
     // Resultado de la acción.
     $result = "";

     // Identificador de proveedor pasado como Post.
     $proveedorId = (int) $_POST['listProveedor'];

     // Datos de facturadores recogidos a partir del identificador de proveedor.
     $modelData = Facturador::model()->findAll(
                              array(
                                    'condition' => 'proveedor_id = :proveedorId',
                                    'params' => array(':proveedorId' => $proveedorId)
                                    )
                              );

     // Si hay datos de facturadores.
     if(!empty($modelData))
     {
          // Los convertimos a una lista con los datos que nos interesan para la lista desplegable.
          // Normalmente queremos que cada elemento de la lista desplegable tenga como valor 
          // el identificador y como texto visible en nombre o descripción del elemento.
          $data = CHtml::listData($modelData, 'facturador_id', 'nombre_facturador');

          // Recorremos todos los facturadores existentes para el proveedor dado y vamos contruyendo 
          // la respuesta, que será el código de nuestra lista enlazada.
          foreach($data as $value => $text)
          {
               $result .= CHtml::tag(
                                    'option', 
                                    array('value' => $value),
                                    CHtml:.encode($text),
                                    true);
          }
     }

     // Devolvemos el código de nuestra lista enlazada.
     echo($result);


Y creo que no me olvido nada, lo he escrito de memoria, pero creo que está bien.

Por supuesto tendrás que cambiar los nombres (de modelos, propiedades, listas, campos, etc...) por los que tu tengas, pero creo que es un código mucho más fácil de seguir y má limpio. Y por supuesto puedes utilizar activeDropDownList en lugar de dropDownList.

Prueba esto a ver que te sale.

Un saludo.
-----------------------------------------------------------------------------------------------
------------------------------- VISITEN FOCUCHASART --------------------------------
-----------------------------------------------------------------------------------------------
0

#27 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted Yesterday, 06:46 AM

View Postlagogz, on 21 June 2017 - 04:17 AM, said:

Buenas.

Es que para mi gusto os complicáis demasiado con las listas desplegables enlazadas.

Yo lo que hago es:

Vista:
echo CHtml::dropDownList(
         		'listProveedor',
         		'tuValor',        // O vacío, lo que quieras.
         		CHtml::listData(........),// Por ejemplo Proveedor::model()->findAll(),...
         		array(
               		'prompt' => 'Seleccione Proveedor',
               		'ajax' => array(
                                      'type'=>'POST',
                                      'url'=>Yii::app()-> createUrl('/facturacion/datosrecepcion/actualizarCombos'), 
                                      'update'=>'#listFacturador',
                                      )));

echo CHtml::dropDownList(
         		'listFacturador',
         		'tuValor',        // O vacío, lo que quieras.
         		array(),          // O cargas datos relacionados con la lista padre.
         		array(
               		'prompt' => 'Seleccione Facturador'
               		));


Controlador:
public function actionActualizarCombos()
{
 	// Resultado de la acción.
 	$result = "";

 	// Identificador de proveedor pasado como Post.
 	$proveedorId = (int) $_POST['listProveedor'];

 	// Datos de facturadores recogidos a partir del identificador de proveedor.
 	$modelData = Facturador::model()->findAll(
                              array(
                                    'condition' => 'proveedor_id = :proveedorId',
                                    'params' => array(':proveedorId' => $proveedorId)
                                    )
                              );

 	// Si hay datos de facturadores.
 	if(!empty($modelData))
 	{
          // Los convertimos a una lista con los datos que nos interesan para la lista desplegable.
          // Normalmente queremos que cada elemento de la lista desplegable tenga como valor 
          // el identificador y como texto visible en nombre o descripción del elemento.
          $data = CHtml::listData($modelData, 'facturador_id', 'nombre_facturador');

          // Recorremos todos los facturadores existentes para el proveedor dado y vamos contruyendo 
          // la respuesta, que será el código de nuestra lista enlazada.
          foreach($data as $value => $text)
          {
       		$result .= CHtml::tag(
                                    'option', 
                                    array('value' => $value),
                                    CHtml:.encode($text),
                                    true);
          }
 	}

 	// Devolvemos el código de nuestra lista enlazada.
 	echo($result);


Y creo que no me olvido nada, lo he escrito de memoria, pero creo que está bien.

Por supuesto tendrás que cambiar los nombres (de modelos, propiedades, listas, campos, etc...) por los que tu tengas, pero creo que es un código mucho más fácil de seguir y má limpio. Y por supuesto puedes utilizar activeDropDownList en lugar de dropDownList.

Prueba esto a ver que te sale.

Un saludo.


Gracias lagogz voy a probar lo que me sugeriste, ayer no pude ver nada, ya que estaba complicado con otro trabajo y no entre a mi PC de escritorio, y en la laptop, no uso interne, luego de comento
0

#28 User is offline   rafaelrosales 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 172
  • Joined: 02-October 13
  • Location:Cuba

Posted Today, 02:42 PM

[quote name='rafaelrosales' timestamp='1498131982' post='310444']
Gracias lagogz voy a probar lo que me sugeriste, ayer no pude ver nada, ya que estaba complicado con otro trabajo y no entre a mi PC de escritorio, y en la laptop, no uso interne, luego de comento
[/quote
Buenas tardes lagogz, lo puse asi y sigue igual, no muestra los resultados en los segundos combos a pesar de que en el debug si los muestra:
en el controlador
public function actionActualizarCombos() {
      	$result = "";
    	$entidadesId = (int) $_POST['CodUEB'];
    	//llenar Facturadores
     	$modelData = Nfacturador::model()->findAll(
            	array(
                	'condition' => 'CodUEB = :CodUEB',
                	'params' => array(':CodUEB' => $entidadesId)
            	)
    	);    	
       	if (!empty($modelData)) {
          	$data = CHtml::listData($modelData, 'CIFac', 'Descripcion');
             	foreach ($data as $value => $text) {
            	$result .= CHtml::tag(
            	'option',
            	array('CIFac' => $value),
            	CHtml::encode($text),
            	true);
        	}
    	}
   	$modelData1 = Entrega::model()->findAll(
            	array(
                	'condition' => 'CodUEB = :CodUEB',
                	'params' => array(':CodUEB' => $entidadesId)
            	)
    	);
    	if (!empty($modelData1)) {      	
     		$data = CHtml::listData($modelData1, 'CIEnt', 'Descripcion');
           	foreach ($data as $value => $text) {
            	$result .= CHtml::tag(
            	'option',
            	array('CIEnt' => $value),
            	CHtml::encode($text),
            	true);
        	}
    	}
   	echo($result);
	}

en la forma
1er combo
<td>
                    	<?php echo $form->labelEx($model, 'CodUEB'); ?>
                    	<?php
                    	echo CHtml::DropDownList(
                            	'CodUEB', 'CodUEB', CHtml::listData(Entidades::model()->findAll(), 'CodUEB', 'NEnt'), array('prompt' => 'Seleccione la entidad',
                        	'ajax' => array(
                            	'type' => 'POST',
                            	'url' => Yii::app()->createUrl('/facturacion/datosrecepcion/actualizarCombos'),
                            	'update' => '#Datosrecepcion_CIFac',
                            	'update' => '#Datosrecepcion_CIEnt',
                    	)));
                    	?>
                    	<?php echo $form->error($model, 'CodUEB'); ?>  
                	</td>

segundo combo dependiente (aqui hay dos combos dependientes del primero)
<td title="Selecione quien recepciona">
                    	<?php echo $form->labelEx($model, 'CIFac'); ?>
                    	<?php
                    	echo CHtml::dropDownList(
                            	'#Datosrecepcion_CIFac', 'CIFac', // O vacío, lo que quieras.
                            	array(), // O cargas datos relacionados con la lista padre.
                            	array(
                        	'prompt' => 'Seleccione Facturador'
                    	));
                    	;
                    	?><?php echo $form->error($model, 'CIFac'); ?>

                	</td>
                	<td title="Selecione quien recepciona">
                    	<?php echo $form->labelEx($model, 'CIEnt'); ?>
                    	<?php
                    	echo CHtml::dropDownList(
                            	'#Datosrecepcion_CIEnt', 'CIEnt', // O vacío, lo que quieras.
                            	array(), // O cargas datos relacionados con la lista padre.
                            	array(
                        	'prompt' => 'Seleccione entrega en almacen'
                    	));
                    	;
                    	?><?php echo $form->error($model, 'CIEnt'); ?>

                	</td>

0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users