Yii Визуализация модели внутри CJuiDialog
Я хочу полностью отобразить представление модели в поле CJuiDialog.
что я сделал, у меня есть модель JOB для этого у меня есть файлы просмотра, которые генерируются Gii.
что я хочу - при нажатии на id для каждой записи в index.php я должен открыть окно CJuiDialog вместо отображения файла представления.
Но что-то идет не так - при обращении к странице индекса отображаются все записи для модели задания и всплывающее окно CJuiDialog, отображающее первую запись ( id=1 запись)
и он отображает вид оставшихся записей на странице индекса.
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',
),
)); ?>
контроллер actionView()
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}
Я не понял, что не так в моем коде. помогите мне решить эту проблему.. Спасибо..
1 ответ
Предполагая, что я понял вашу проблему, есть пара проблем с объявлением вашего виджета.
1. Ваш идентификатор не уникален для каждого пользовательского интерфейса на экране. + Изменить 'id' => 'mydialog'
что-то вроде "dialog_{$data->id}"
, Убедитесь, что изменили onclick
JQuery ID, чтобы соответствовать этому идентификатору.
2. у вас есть autoOpen
установлен в true
, Установите это false
,
Также. Вы повторяете 'dialog content here'
в каждом диалоге:) .
ура