Yii2 中 ActiveForm 和 GridView 使用 Pjax
2017-01-14 22:12
477 查看
应用场景:
使用 ActiveForm表单修改数据后,提交表单,然后自动更新 GridView数据,表单和列表在同一个页面
如果自定义非ActiveForm表单按钮事件,可用ajax + $.pjax.reload() 代替
一个如何在 Yii2 的 GridView 和 ActiveForm 扩展中使用 Pjax 的例子。
这个例子使用一个数据库表 "countries" 字段为 id, name。
_form.php
英文版:http://www.yiiframework.com/wiki/772/pjax-on-activeform-and-gridview-yii2/
使用 ActiveForm表单修改数据后,提交表单,然后自动更新 GridView数据,表单和列表在同一个页面
如果自定义非ActiveForm表单按钮事件,可用ajax + $.pjax.reload() 代替
一个如何在 Yii2 的 GridView 和 ActiveForm 扩展中使用 Pjax 的例子。
这个例子使用一个数据库表 "countries" 字段为 id, name。
控制器
public function actionIndex() { $model = new Countries(); if ($model->load(Yii::$app->request->post()) && $model->save()) { $model = new Countries(); //reset model } $searchModel = new CountriesSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'model' => $model, ]); }
视图
index.php<?php use yii\helpers\Html; use yii\grid\GridView; use yii\widgets\Pjax; /* @var $this yii\web\View */ /* @var $searchModel app\models\CountriesSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = Yii::t('app', 'Countries'); $this->params['breadcrumbs'][] = $this->title; ?> <div class="countries-index"> <h1><?= Html::encode($this->title) ?></h1> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <p> <?= Html::a(Yii::t('app', 'Create {modelClass}', [ 'modelClass' => 'Countries', ]), ['create'], ['class' => 'btn btn-success']) ?> </p> <!-- Render create form --> <?= $this->render('_form', [ 'model' => $model, ]) ?> <?php Pjax::begin(['id' => 'countries']) ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'name', ['class' => 'yii\grid\ActionColumn'], ], ]); ?> <?php Pjax::end() ?> </div>
_form.php
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model app\models\Countries */ /* @var $form yii\widgets\ActiveForm */ ?> <?php $this->registerJs( '$("document").ready(function(){ $("#new_country").on("pjax:end", function() { $.pjax.reload({container:"#countries"}); //Reload GridView }); });' ); ?> <div class="countries-form"> <?php yii\widgets\Pjax::begin(['id' => 'new_country']) ?> <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true ]]); ?> <?= $form->field($model, 'name')->textInput(['maxlength' => 200]) ?> <div class="form-group"> <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> <?php yii\widgets\Pjax::end() ?> </div>
英文版:http://www.yiiframework.com/wiki/772/pjax-on-activeform-and-gridview-yii2/
相关文章推荐
- yii2 GridView使用记录
- 在Yii2中使用Pjax导致Yii2内联脚本载入失败的问题
- Yii2 之 Activeform 表单部分组件使用方法
- yii2的GridView和ActiveDataProvider具体使用
- yii2 gridview使用问题解决
- yii2使用gridView实现下拉列表筛选数据
- 在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
- yii2 Pjax的使用
- yii2中如何使用modal弹窗之结合gridview的使用
- Yii2 Pjax 使用
- [yii2] -- [ActiveForm] -- ActiveForm的使用方法
- yii2 pjax使用
- yii2中结合gridview如何使用modal弹窗实例代码详解
- yii2中GridView使用进阶
- yii2使用GridView实现数据全选及批量删除按钮示例
- 小谈yii2中3个数据提供者及与GridView的搭配使用
- [ActiveDataProvider] -- yii2的GridView和ActiveDataProvider具体使用
- yii2 pjax使用
- 在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析