Yii Framework Forum: Problema Con Tabular Input - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problema Con Tabular Input PHP notice: Undefined offset: 1 Rate Topic: -----

#1 User is offline   jsanchez 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 19-June 12

Posted 04 December 2012 - 04:44 PM

Hola que tal buena tarde tengo 2 días tratando de hacer esto de tabular input pero solo me sale parcialmente.
El caso es el siguiente:
Tengo una relación uno a muchos para un registro, leí el apartado de la guía de Yii de Tabular Input y lo implemente, solo que tengo un pequeño problema que no puedo resolver al recorrer el array con objetos de la misma clase "telefonos" el form me pasa los 2 pero solo uno tiene datos y el otro no. Aquí dejo el código y espero que me puedan ayudar.

El del controller

    	$telefonoMovil=new TelefonosUsuario;
		$telefonoMovil->idTipoTelefono=1;			
		$telefonoOficina=new TelefonosUsuario;
		$telefonoOficina->idTipoTelefono=2;
		$telefonos=array($telefonoMovil,$telefonoOficina);	

		$valido=true;		
		
		if(isset($_POST['TelefonosUsuario'])){
			foreach ($telefonos as $i=>$t){
				if (isset($_POST['TelefonosUsuario'][$i])){
					$t->attributes=$_POST['TelefonosUsuario'][$i];
					Yii::log($t->numero.' es del index '.$i);
				}															
													
				$valido=$t->validate() && $valido;																
			}
		}		
		
		if(isset($_POST['Usuarios']))
			$usuario->attributes=$_POST['Usuarios'];
		
		$valido=$usuario->validate() && $valido;


El de la vista:
<label>Teléfono celular <span class="required">*</span></label>
						<?php foreach ($telefonos as $i=>$t) : ?>
							<?php if ($t->idTipoTelefono==1) : ?>
							<form class="form-inline">													
								<?php echo CHtml::activeTextField($t,
										"[$i]lada",
										array(										
											'class'=>'input-mini',
											'value'=>'044',
											'tabindex'=>'4'										
										)
								); ?>
								<?php echo CHtml::activeTextField($t,
										"[$i]numero",
										array(
											'class'=>'input-medium',
											'placeholder'=>'Número',
											'tabindex'=>'5'
										)
								); ?>
								<?php echo CHtml::activeHiddenField($t, "[$i]id_usuario",
										array(
											'value'=>$usuario->id_crugeUser //valor temporal hasta que el usuario se da de alta en db
										)
								); ?>								
							</form>
							<?php 
								echo CHtml::error($t, "[$i]lada", array('class'=>'help-block error'));
								echo CHtml::error($t, "[$i]numero", array('class'=>'help-block error'));							
							?>	
							<?php endif; ?>
						<?php endforeach; ?>						
					</div>
					... 						
	    			<div>    		
						<label>Teléfono de oficina <span class="required">*</span></label>	
						<?php foreach ($telefonos as $i=>$t) : ?>
							<?php if ($t->idTipoTelefono==2) : ?>									
							<form class="form-inline">
								<?php echo CHtml::activeTextField($t,
										"[$i]lada",
										array(											
											'class'=>'input-mini',
											'placeholder'=>'Lada',
											'tabindex'=>'10'								
										)
								); ?>
								<?php echo CHtml::activeTextField($t,
										"[$i]numero",
										array(
											'class'=>'input-large',
											'placeholder'=>'Número',
											'tabindex'=>'11'
										)
								); ?>
								<?php echo CHtml::activeTextField($t,
										"[$i]extension",
										array(
											'class'=>'input-mini',
											'placeholder'=>'Ext.',
											'tabindex'=>'12'
										)
								); ?>
								<?php echo CHtml::activeHiddenField($t, "[$i]id_usuario",
										array(
											'value'=>$usuario->id_crugeUser //valor temporal hasta que el usuario se da de alta en db
										)
								); ?>							
							</form>
							<?php 
								echo CHtml::error($t, "[$i]lada", array('class'=>'help-block error'));
								echo CHtml::error($t, "[$i]numero", array('class'=>'help-block error'));							
				             ?>
							<?php endif; ?>
						<?php endforeach; ?>


El asunto es que el index 1 esta indefinido puesto que el log se imprime en index 0.

Espero algún aporte.

Mi versión de desarrollo es Yii 1.1.12 + Bootstrap 1.2.0
0

#2 User is offline   jsanchez 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 19-June 12

Posted 05 December 2012 - 02:12 PM

Replique todo el formulario con CActiveForm en una nueva vista y el problema se resuelve para los campos empleados en el Tabular Input, el $_POST['TelefonosUsuario'][$i] al parecer no ingresa el último index cuando tengo la clase bootstrap.widgets.TbActiveForm como clase modelo del widget, por lo tanto es un bug de Bootstrap versión 1.2.0.r300 así que habrá que reportarlo. ¿Alguien sabe donde?
0

Share this topic:


Page 1 of 1
  • 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