Yii Representar una Vista del Modelo Dentro de CJuiDialog
-
21-12-2019 - |
Pregunta
Quiero rendir un Modelo de vista completamente en el CJuiDialog cuadro.
lo que hice es que tengo un modelo de TRABAJO para esto he de ver los archivos que se generan por el Gii.
lo que yo quiero - cuando se hace clic en el id de cada registro en index.php debo abrir CJuiDialog de caja en vez de la representación de la vista de archivo.
Pero, algo que va mal-cuando el índice de la página se accede muestra todos los registros para el trabajo de modelo y un pop-up CJuiDialog cuadro que muestra el primer registro( id=1 registro)
y la visualización de la vista para el resto de los registros en la página de índice.
index.php
<?php
$this->breadcrumbs=array(
'Jobs',
);
$this->menu=array(
array('label'=>'Create Jobs','url'=>array('create')),
array('label'=>'Manage Jobs','url'=>array('admin')),
);
?>
<h1>Jobs</h1>
<?php $this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
)); ?>
_view.php
<?php
$target = 'window.location='."'".$this->createUrl('jobs/index')."'";
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'mydialog',
// additional javascript options for the dialog plugin
'options'=>array(
'title'=>'View Job..',
'autoOpen'=>true,
'buttons' => array(
array('text'=>'Route','click'=> 'js:function(){'.$target.'}'),
array('text'=>'Cancel','click'=> 'js:function(){$(this).dialog("close");}'),
),
'height'=>400,
'width'=>450,
'show'=>'fade',
'hide'=>'fade',
),
));
//define the model
// $model=new Jobs;
echo 'dialog content here';
$this->renderPartial('/jobs/view',array('model'=>$data));
$this->endWidget('zii.widgets.jui.CJuiDialog');
// the link that may open the dialog
echo CHtml::link('open dialog', '#', array(
'onclick'=>'$("#mydialog").dialog("open"); return false;',
));
?>
<div class="view">
<b><?php echo CHtml::encode($data->getAttributeLabel('job_id')); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->job_id),array('view','id'=>$data->job_id)); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_code')); ?>:</b>
<?php echo CHtml::encode($data->job_code); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_title')); ?>:</b>
<?php echo CHtml::encode($data->job_title); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_desc')); ?>:</b>
<?php echo CHtml::encode($data->job_desc); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_lastdate')); ?>:</b>
<?php echo CHtml::encode($data->job_lastdate); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_photo')); ?>:</b>
<?php echo CHtml::encode($data->job_photo); ?>
<br />
<b><?php echo CHtml::encode($data->getAttributeLabel('job_file')); ?>:</b>
<?php echo CHtml::encode($data->job_file); ?>
<br />
<?php /*
<b><?php echo CHtml::encode($data->getAttributeLabel('job_createtime')); ?>:</b>
<?php echo CHtml::encode($data->job_createtime); ?>
<br />
*/ ?>
</div>
view.php
<h1>View Jobs #<?php echo $model->job_id; ?></h1>
<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
'job_id',
'job_code',
'job_title',
'job_desc',
'job_lastdate',
'job_photo',
'job_file',
'job_createtime',
),
)); ?>
controlador de actionView()
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
Yo no consiguiendo qué hay de malo en mi código.me ayudan a resolver este problema..Gracias..
Solución
Suponiendo que yo entendía su problema hay un par de problemas con el widget de la declaración.
1.Su identificación no es única para cada ui widget de la pantalla.Cambio 'id' => 'mydialog'
para algo como "dialog_{$data->id}"
.Asegúrese de cambiar el onclick
jQuery id para que coincida con el id.
2.Usted tiene autoOpen
conjunto para true
.Conjunto a false
.
También.Estás haciendo eco de la 'dialog content here'
en cada cuadro de diálogo :) .
Saludos