2015-02-23 19 views
5

Ho due ActiveForm in una finestra modale e dopo aver inviato il primo modulo, devo aggiornare il secondo e rimanere in modal.Come aggiornare il widget con pjax nella finestra modale in yii2

modal

quanto ho capito pjax in grado di gestire questo, ma non riesco a farlo funzionare correttamente.

In _form.php ho ActiveForm con widget di wich dovrebbe essere aggiornato:

<?php $form = ActiveForm::begin([ 
    'id'=>'form', 
    'enableAjaxValidation'=>true, 
]); ?> 
<?= Html::activeHiddenInput($riskModel, 'id', ['value' => $riskModel->id]) ?> 

<?php Pjax::begin([ 
    'id' => 'solutionItems', 
]) ?> 
//need to update this widget 
    <?= $form->field($riskModel, 'solutions_order')->widget(SortableInput::classname(), [ 
     'items' => $riskModel->getSolutionList(), 
     'hideInput' => false, 
     'options' => ['class'=>'form-control', 'readonly'=>false] 
    ]); ?> 
<?php Pjax::end() ?> 

<div class="form-group"> 
    <?= Html::submitButton($riskModel->isNewRecord ? 'Create' : 'Update', ['class' => $riskModel->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'onclick' => 'return isConnected()']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

E poi ho Ajax torna richiesta wich successo, se si crea nuova soluzione:

  $.ajax({ 
      url: form.attr('action'), 
      type: 'post', 
      data: form.serialize(), 
      success: function (data) { 
       if (data && data.result == 1) { 
        $.pjax.reload({container:'#solutionItems'}); 
       } 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       $("#error").html("Kļūda! Neizdevās pievienot ierakstu.").fadeIn('highlight','', 2000, callbackError()); 
       $("#solutions-solution").val(""); 
      } 
     }); 

Ma

chiude modale :( Se inserisco il valore restituito in div, quindi ajax funziona correttamente e il modale non si sta chiudendo.

risposta

2

gestito senza $ .pjax, appena aggiunto l'

$("#risks-solutions_order-sortable").append('<li data-id="'+data.id+'" data-key="'+data.id+'" draggable="true">'+data.solution+'</li>'); 
$("ul[id$='sortable'").trigger('sortupdate'); 
$('#risks-solutions_order-sortable').sortable("refreshPositions"); 

nel successo Ajax e tutto è ok! :)

+0

sai come farlo con pjax da ora? – Ruben

+0

@Ruben no, ma non esploro più pjax dopo che sono riuscito a gestire jquery. –

+0

@Ruben prova la mia risposta: http://stackoverflow.com/a/39170359/3793592 – IStranger