Button Yii2:如何在Gridview之外呈现Pjax内容,由Gridview按钮触发 问题
对于那些有这个问题的人,我会帮你省去一些头痛 总之:Pjax链接选择器必须指向锚元素,否则您将收到未捕获的jquery错误,这一点至关重要 我遇到的问题是使用Pjax更新Gridview小部件之外的内容。我使用Html::button添加了一个自定义按钮,但pjax由于未知原因失败 当在gridview小部件上使用“class”=>“yii\grid\ActionColumn”的本机按钮测试pjax时,pjax会很好地刷新,这给我带来了一些混乱。我没有意识到的是,pjax链接选择器只在元素上工作,链接选择器不会在使用Html::button(…);时生成的元素上工作 收到此错误:未捕获$.fn.pjax或$.pjax.click需要锚元素 看法 文件位置:app/views/default/pjax-example.php [Pjax代码]Button Yii2:如何在Gridview之外呈现Pjax内容,由Gridview按钮触发 问题,button,gridview,yii2,pjax,Button,Gridview,Yii2,Pjax,对于那些有这个问题的人,我会帮你省去一些头痛 总之:Pjax链接选择器必须指向锚元素,否则您将收到未捕获的jquery错误,这一点至关重要 我遇到的问题是使用Pjax更新Gridview小部件之外的内容。我使用Html::button添加了一个自定义按钮,但pjax由于未知原因失败 当在gridview小部件上使用“class”=>“yii\grid\ActionColumn”的本机按钮测试pjax时,pjax会很好地刷新,这给我带来了一些混乱。我没有意识到的是,pjax链接选择器只在元素上工
我使用的代码没有链接选择器。也没有
数据pjax=0
views/tranlate/index.php
<?php Pjax::begin(['id' => 'translate-grid', 'timeout' => false, 'enablePushState' => true]) ?>
# here you form
<?php $form = ActiveForm::begin(['action'=> Url::current(),'id'=>'edit-form']) ?>
<?= $form->field($model, 'word')->textInput() ?>
<?php ActiveForm::end() ?>
<?= GridView::widget([
'id' => 'data-grid',
'dataProvider' => $dataProvider,
'columns' => [
[
'attribute' => 'title',
'format' => 'raw',
'value' => function ($model) {
return Html::a($name, [
'id' => $model->id
]);
},
],
]
]) ?>
<?php Pjax::end() ?>
你不能在没有进入表单的情况下使用按钮。你最好使用链接
$data = [
['step_id' => 1, 'step_name' => 'Step A'],
['step_id' => 2, 'step_name' => 'Step B'],
['step_id' => 3, 'step_name' => 'Step C'],
];
$dataProvider = new ArrayDataProvider([
'allModels' => $data,
'sort' => [
'attributes' => ['id', 'name'],
],
]);
echo GridView::widget([
'dataProvider' => $dataProvider,
'tableOptions' => [
'class' => 'table',
],
'columns' => [
'step_id',
'step_name',
[
'class' => 'yii\grid\DataColumn',
'label' => 'Button-1',
'format'=> 'raw',
'value' => function ($url, $data) {
return Html::a(
'<span class="glyphicon glyphicon-flash"></span>',
Url::to(['default/select', 'id'=>$data['step_id']]),
[
'class' => 'btn btn-danger btn-xs action-select',
'data-pjax'=> 'p0', // We must specify the pjax ID.
]
);
},
],
[
'class' => 'yii\grid\ActionColumn',
'template' => '{select}',
'header' => 'Button-2',
'buttons' => [
'select' => function ($url, $data) {
return Html::Button(
'<span class="glyphicon glyphicon-pencil"></span>',
['value' => Url::to(['default/select', $data['step_id']]),
'class' => 'btn btn-danger btn-xs action-select',
'data-pjax'=> 'p0',
]);
},
],
],
],
]);
public function actionSelect()
{
$random_val = 'Rand_01: ' . rand(10,100);
return $random_val;
}
public function actionPjaxExample()
{
$random_val = 'Rand_02: ' . rand(10,100);
return $this->render('pjax-example', [
'random_val' => $random_val
]);
}
<?php Pjax::begin(['id' => 'translate-grid', 'timeout' => false, 'enablePushState' => true]) ?>
# here you form
<?php $form = ActiveForm::begin(['action'=> Url::current(),'id'=>'edit-form']) ?>
<?= $form->field($model, 'word')->textInput() ?>
<?php ActiveForm::end() ?>
<?= GridView::widget([
'id' => 'data-grid',
'dataProvider' => $dataProvider,
'columns' => [
[
'attribute' => 'title',
'format' => 'raw',
'value' => function ($model) {
return Html::a($name, [
'id' => $model->id
]);
},
],
]
]) ?>
<?php Pjax::end() ?>
public function actionIndex($id = false)
{
$searchModel = new TranslateSearch();
$model = $id ? $this->findModel($id) : new Translate();
if ($model->load(Yii::$app->request->post())) {
if ($model->save()) {
return $this->redirect(Yii::$app->request->getReferrer());
}
}
return $this->render('index', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $searchModel->search(Yii::$app->request->get()),
]);
}