Yii Rendu d'une Vue du Modèle à l'Intérieur de CJuiDialog
-
21-12-2019 - |
Question
Je veux rendre un Modèle de la vue complètement dans le CJuiDialog boîte.
ce que j'ai fait est que j'ai un modèle de TRAVAIL pour cela, je dois afficher les fichiers qui sont générés par Gii.
ce que je veux, - en cliquant sur l'id pour chaque enregistrement sur index.php je devrais ouvrir CJuiDialog boîte au lieu de rendre le fichier de vue.
Mais, quelque chose va de travers, lorsque les index page est accessible, il affiche tous les enregistrements de la tâche modèle et un pop up CJuiDialog boîte affichant premier enregistrement( id=1 dossier)
et l'affichage de la vue pour les enregistrements restants sur la page d'index.
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',
),
)); ?>
contrôleur de actionView()
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
Je n'ai pas ce qui est faux dans mon code.m'aider à résoudre ce problème..Je Vous Remercie..
La solution
En supposant que j'ai compris votre problème, il existe quelques problèmes avec votre widget déclaration.
1.Votre id n'est pas unique pour tous les ui widget sur l'écran.Changement 'id' => 'mydialog'
à quelque chose comme "dialog_{$data->id}"
.Assurez-vous de changer la onclick
jQuery id pour correspondre à l'id.
2.Vous avez autoOpen
mis à true
.Mis à false
.
Aussi.Vous êtes en écho à la 'dialog content here'
dans chaque boîte de dialogue :) .
Cheers