Frage

Ich möchte eine Modellansicht vollständig in der CJuiDialog-Box rendern.

was ich getan habe ist, dass ich einen Modelljob dafür habe, ich habe View-Dateien, die von Gii generiert werden.

was ich will - beim Klicken auf die ID für jeden Datensatz im Index.php Ich sollte die CJuiDialog-Box öffnen, anstatt die Ansichtsdatei zu rendern.

Aber etwas geht schief - wenn auf die Indexseite zugegriffen wird, werden alle Datensätze für das Jobmodell und ein Popup-Dialogfeld mit dem ersten Datensatz angezeigt (id = 1 Datensatz)

und es zeigt die Ansicht für verbleibende Datensätze auf der Indexseite an.

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',
)); ?>

_Blick.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>

Blick.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',
),
)); ?>

controller-Aktionsansicht ()

 public function actionView($id)
 {

    $this->render('view',array(
        'model'=>$this->loadModel($id),
    ));
 }

Ich habe nicht verstanden, was in meinem Code falsch ist.hilf mir, dieses Problem zu lösen..Danke..

War es hilfreich?

Lösung

Angenommen, ich habe Ihr Problem verstanden, es gibt einige Probleme mit Ihrer Widget-Deklaration.

1.Ihre ID ist nicht für jedes UI-Widget auf dem Bildschirm eindeutig.Ändern 'id' => 'mydialog' zu so etwas wie "dialog_{$data->id}".Stellen Sie sicher, dass Sie das ändern onclick jQuery-ID, die mit dieser ID übereinstimmt.

2.Sie haben autoOpen setzen auf true.Setze es auf false.

Auch.Du wiederholst das 'dialog content here' in jedem Dialog :) .

Jubel

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top