2014-11-23 3 views
0

У меня есть мнение с к моделям: контакты и телефоны, и я хочу, чтобы создать представление, чтобы обновить эти две модели, на мой взгляд, как это:YII2 Форма с GridView и 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, действие (create ou update) ContactController - это вызов, но запрос не имеет данных о контакте и ввода данных. Как я могу сделать это в YII2?

Спасибо.

+0

Ваш вопрос очень трудно понять. Итак, ваша проблема в том, что когда вы cann $ .pjax.reload поле Contact [name] опустели? Если это так, вы, вероятно, обновляете страницу и не используете pjax. –

+0

см. Эту статью http://www.yiiframework.com/wiki/772/pjax-on-activeform-and-gridview-yii2/ – GAMITG

ответ

0

Если я правильно понял ваш вопрос, вы получите пустой ответ от звонка pjax. Это может быть вызвано тем, что у вас есть фактическая form (и это models) являются вне от pjax вызова, в результате чего он НЕ, чтобы обновить их и не делая соединения вообще.

В моем варианте мы должны содержать ВСЕ данные, которые у вас есть внутри pjax с queries/models. Например:

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

Когда pjax.reload называется все-тегов, он также будет выполнять новый запрос, и поэтому возвращает новый массив данных.

Надеюсь, это будет полезно для вас.

Смежные вопросы