2014-11-23 5 views
0

내가 모델로 볼 수 있습니다 : 연락처 및 전화, 그리고이 두 가지 모델을 업데이트 할 수있는 뷰를 만들려면, 내보기는 다음과 같이이다 :YII2 양식 및 Pjax

<?php $form = ActiveForm::begin(['id'=>'Contact']); ?> 
<?= $form->field($model, 'name')->textInput() ?> 
<?php Pjax::begin(); ?> 
<?= \yii\grid\GridView::widget([ 
    'id' => 'phonesGrid', 
    'dataProvider' => new ArrayDataProvider([ 
     'allModels' => $fones, 
     'sort' => [ 
      'attributes' => ['number', 'ramal'], 
     ], 
     'pagination' => false, 
    ]), 
    'columns' => [ 
     'number', 
     'ramal', 
     ['class' => 'yii\grid\ActionColumn'] 
    ], 
]); ?> 
<?php Pjax::end(); ?> <?php ActiveForm::end(); ?> 

문제는 $.pjax.reload으로 전화 할 때 ContactController의 작업 (생성 또는 업데이트)이 호출되지만 요청에 양식 데이터가없고 입력하는 데이터가 명확합니다. YII2에서 어떻게 할 수 있습니까?

감사합니다.

+0

귀하의 질문에 대한 이해는 매우 어렵습니다. 그래서 문제는 당신이 cann $ .pjax.reload 연락처 [name] 필드를 비울 때입니까? 그렇다면 pjax를 사용하지 않고 페이지를 새로 고칠 것입니다. –

+0

이 기사 참조 http://www.yiiframework.com/wiki/772/pjax-on-activeform-and-gridview-yii2/ – GAMITG

답변

0

질문을 올바르게 이해하면 pjax 전화에서 응답이 없습니다. 이것은 당신이 가지고 있다는 사실에 의해 야기 될 수있는 실제 form (그리고 models있어)가 를 새로 고침하지 원인이 더 연결 무엇이든지을하지의 pjax 전화의 외부 있습니다.

내 opionion에는 pjax 안에있는 모든 데이터를 포함하는 것이 가장 좋습니다. queries/models입니다. 예를 들어하십시오 pjax.reload이 모든 태그를 호출

<div class='resp-col col-12'> 
    <?php Pjax::begin([ 
     'id'=>'all-tags', 
     'timeout' => 5000, 
    ]); ?> 
<?php 
$query = Tag::find(); 
$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
    'pagination' => [ 
     'pageSize' => 20, 
    ], 
]); 
echo GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'columns'=> [ 
     'view'=>[ 
     'header'=>'view', 
     'options'=>[ 
      'width'=>'5%' 
     ], 
     'format'=>'raw', 
     'value'=>function ($data) { 
      return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', Url::to(['detail', 'id'=>$data->id]), ['data-type'=>'modal', 'data-title'=>'View item']). 
      '<a><span class="glyphicon glyphicon-remove" onclick=DeleteTag("'.$data->id.'")></span></a>';; 
     }, 
     ], 
     'name', 
     'content', 
    ] 
]); 
?> 
<?php Pjax::end()?> 

, 그것은 또한 새로운 쿼리를 수행하기 때문에 데이터의 새로운 배열을 반환합니다.

잘하면이 도움이됩니다.