2015-02-23 16 views
5

Tôi có hai ActiveForms trong cửa sổ phương thức và sau khi gửi biểu mẫu đầu tiên, tôi cần cập nhật biểu mẫu thứ hai và giữ nguyên phương thức.Làm thế nào để cập nhật widget với pjax trong cửa sổ phương thức trong yii2

modal

Theo tôi được biết pjax có thể xử lý đó, nhưng không thể làm cho nó hoạt động đúng.

Trong _form.php Tôi có ActiveForm với Widget Mà nên được cập nhật:

<?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(); ?> 

Và sau đó tôi có Ajax lợi nhuận yêu cầu Mà thành công nếu giải pháp mới được tạo ra:

  $.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(""); 
      } 
     }); 

Nhưng

$.pjax.reload({container:'#solutionItems'}); 

đóng phương thức :( Nếu tôi đặt giá trị trả về bằng div, thì ajax hoạt động đúng và phương thức không đóng.

Trả lời

2

Managed mà không cần $ .pjax, chỉ cần bổ sung này

$("#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"); 

trong thành công ajax và mọi thứ đều ok! :)

+0

bạn có biết làm thế nào để làm điều này với pjax bởi bây giờ? – Ruben

+0

@Ruben no, nhưng tôi không khám phá thêm pjax sau khi tôi quản lý qua jquery. –

+0

@Ruben thử câu trả lời của tôi: http://stackoverflow.com/a/39170359/3793592 – IStranger

Các vấn đề liên quan