2014-12-11 4 views
0

Я пытаюсь отобразить CGridView в CJuiDialog, но перед некоторыми проблемами. На мой взгляд, я создаю пункт меню следующим образом:Yii link linkOptions не работает с ajax

$this->menu = array(
    array('label' => Yii::t('app', 'Afficher les participants ayant fourni cette information'), 
     'url' => array('Participant/ShowParticipantInfo', 'id' => $model->id_info), 
     'linkOptions' => array(
      //'onclick' => "{viewP(); $('#dialogViewP').dialog('open'); return false}", 
      'ajax' => array(
       'type' => 'POST', 
       'url' =>"js:$(this).attr('href')", //array('Participant/ShowParticipantInfo', 'id' => $model->id_info), 
       'update' => '#divForForm2', 
      ), 
     ), 
); 

Затем я создал диалог:

<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
     'id' => 'dialogViewP', 
     'options' => array(
      'title' => 'Liste des participants ayant fourni cette information', 
      'autoOpen' => false, 
      'modal' => true, 
      'width' => 500, 
      'height' => 300, 
     ), 
    )); 
    ?> 
    <div id="divForForm2"></div> 
    <?php $this->endWidget('dialogViewP'); ?> 

И мой контроллер выглядит следующим образом один:

public function actionShowParticipantInfo($id){ 
     $rows = Participant::findParticipantInfo($id); 

      $result = array(); 
      foreach ($rows AS $key => $val){ 
       $result[] = array('id' => $key +1, 'value' => $val['NomComplet']); 
      } 
      $arrayDataProvider = new CArrayDataProvider($result, array(
       'id' => 'id', 
       'pagination' => array(
        'pageSize' => 10, 
       ), 
      )); 
     if(Yii::app()->request->isAjaxRequest){ 

      $this->renderPartial('_showparticipant', array(
        'arrayDataProvider' => $arrayDataProvider, 
        ), false, true); 
      echo CHtml::script('$("#dialogViewP").dialog("open")'); 
      Yii::app()->end(); 
     } 
    } 

Но, но нажав на пункт меню, появится диалоговое окно. Я не знаю, почему. Может кто-нибудь мне помочь?

ответ

0

Я думаю, что в элементе меню не должно быть атрибутов «url» и «linkOption». Или один. Через инструменты веб-разработчика вам нужно проверить , если у вас есть ajax XHR по пункту меню, нажмите.

Я бы порекомендовал вам this extention, если вы хотите реализовать ajax manu.

Даже если вы инициируете запрос ajax, ответ не может активировать скрытое диалоговое окно, потому что при успехе вы ТОЛЬКО обновляете определенный div #divForForm2, но диалоговое окно по-прежнему закрыто: 'autoOpen' => false. Я бы рекомендовал включить диалог открытия при успехе ajax.

'ajax' => array(
     'type' => 'POST', 
     'url' => array('Participant/ShowParticipantInfo', 'id' => $model->id_info), 
     'success' =>'js:{function(data){$("#divForForm2").html(data); $("#dialogViewP").dialog("open");}' 
     ), 
Смежные вопросы