2014-11-23 56 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的动作(创建OU更新)的ContactController是呼叫,但该请求不具有接触形式的数据并将该数据进入是明确的。 我怎样才能做到这一点YII2?

谢谢。

+0

你的问题很难理解。所以你的问题是,当你不能$ .pjax.reload联系人[姓名]字段被清空?如果是这种情况,那么你可能刷新页面而不使用pjax。 – 2014-11-23 22:42:56

+0

看到这篇文章http://www.yiiframework.com/wiki/772/pjax-on-activeform-and-gridview-yii2/ – GAMITG 2015-06-22 06:15:34

回答

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被呼吁所有标签,它也将执行新的查询,因此返回一个新的数据阵列。

希望这对您有所帮助。