Quantcast
Channel: Yii Framework Forum
Viewing all articles
Browse latest Browse all 18717

Multimodel Forms Y Cjuitabs

$
0
0
Saludos a todos.
Soy novatillo en Yii y estoy haciendo un proyecto para ir avanzando.

Estoy intentando crear un form con tres modelos, y que haga un renderpartial con cada uno de los _form de los modelos (factura, cliente, productoXXX). Aún es un prototipo, por éso factura es model ahora, y en un futuro próximo será model_factura.

Lo he realizado con la vista create y con un renderPartial:
echo $this->renderPartial('_form', array('model'=>$model, 'model_cliente'=>$model_cliente, 'model_producto001'=>$model_producto001,));


Accedo al _form de factura completo en el view create y le voy insertando los campos de cada modelo:

	<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
    'name'=>'Factura[fecha_venta]',
   // 'header'=>'fecha_venta',
    // additional javascript options for the date picker plugin
    'options'=>array(
        'showAnim'=>'fold',
        'dateFormat'=>'dd-mm-yy',
    ),
    'htmlOptions'=>array(
        'style'=>'height:20px;width:80px;'
    ),
));	
?>
<?php echo $form->error($model,'fecha_venta'); ?>
		<?php echo $form->labelEx($model_cliente,'nombre'); ?>
		<?php echo $form->textField($model_cliente,'nombre'); ?>
		<?php echo $form->error($model_cliente,'nombre'); ?>

    $products = Producto::model()->findAll('area = :area', array(':area' => $_GET['id']));

      echo "Producto: ".CHtml::activeDropDownList($model, 'producto_id', CHtml::listData($products, 'producto_id', 'nombre'));

// etc...


Funciona bien, valida y graba en la base de datos.
Pero me gustaría integrarlo con un CJuiTabs. No es imprescindible, pero sí sería deseable... Sobre todo porque cada factura puede tener un sólo producto, y éste ser heterogéneo (desde bebidas alcohólicas hasta paseos en helicóptero, de ahí lo de ProductoXXX)
En el _form de factura tendría sus campos, y llamaría a un partial (o un método similar) para el _form de cliente y el de productoXXX.

En mi Factura controller, en el actionCreate tengo:
		$model=new Factura;
		$model_cliente=new Cliente;
		$model_producto001=new Producto001;
		if(isset($_POST['Factura'], $_POST['Cliente'], $_POST['Producto001']))
		{
// ajax validate & save
                }
	$this->render('create',array(
		'model'=>$model,
		'model_cliente'=>$model_cliente,
		'model_producto001'=>$model_producto001,
	));


Pero en el create de factura sólo me funciona bien así:
$this->widget('zii.widgets.jui.CJuiTabs',array(
    'tabs'=>array(
        'type1'=>$this->renderPartial('_form',array('model' => $model, 'model_cliente'=>$model_cliente, 'model_producto001'=>$model_producto001, ), true ),
        'StaticTab 2'=>array('content'=>'Content for tab 2', 'id'=>'tab2'),
        // 'eltres'=>$this->renderPartial('_form', array('model_cliente'=>$model_cliente, ), $this),
        // panel 3 contains the content rendered by a partial view
       // 'AjaxTab'=>array('ajax'=>$ajaxUrl),
    ),
    // additional javascript options for the tabs plugin
    'options'=>array(
        'collapsible'=>true,
    ),
));


No soy capaz de meter en cada tab su partial y que no me genere errores.
Me imagino que el problema está en la declaración de modelos dentro del actionCreate o de cómo paso los modelos al render('create'=> para que luego me funcionen los partial independientemente de si están 'dentro' del form Factura o no.

No sé si me he explicado bien.

¿Alguien me puede orienter en la dirección correcta?

Gracias anticipadas.

Viewing all articles
Browse latest Browse all 18717

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>