select2 和 Pjax 在 yii2 中不能一起工作

Posted

技术标签:

【中文标题】select2 和 Pjax 在 yii2 中不能一起工作【英文标题】:select2 and Pjax not work together in yii2 【发布时间】:2015-11-14 15:21:14 【问题描述】:

当我在 yii2 中使用 pjax 时。 select2 小部件停止工作。而 select2 单独工作。 (不合作)

我同时使用 select2 小部件和 pjax。但是当使用 pjax 提交表单时。在新形式中,select2 不起作用。 (只显示加载img)。请帮助我 什么问题?

我想同时使用两者。

select2 extention page

【问题讨论】:

【参考方案1】:

在视图中:

<?php
use yii\helpers\Hrml;
use yii\widgets\Pjax;


/* @var $this yii\web\View */
/* @var $model app\models\Vitrin */

?>

<?php Pjax::begin(); ?>
<?php
if($model->getProductTypeSetting()=='both')

    echo $this->render('_form', [
        'model' => $model,
    ]);

?>
<?php Pjax::end(); ?>

在_form中:

<!-- BEGIN PAGE CONTENT-->
<?= html::beginForm(['vitrin/index', 'id' => $id], 'post'['data-pjax' => '']); ?>
<?= Html::activeInput('text', $model, 'name', ['class' => $username]) ?>
<?= Html::submitButton('Submit', ['class' => 'submit']) ?>
<?= Html::endForm() ?>
<!-- END PAGE CONTENT-->

在控制器中:

if(Yii::$app->request->post('productType'))

$model->productType = $_POST['productType'];
if($model->productType=='physical')

return $this->renderAjax('_formProduct', ['products' => $this->getProductName()]);

else
throw new \yii\web\HttpException(406, Yii::t('app', 'Your request is invalid.'));

在_formProduct中:

<!-- BEGIN PAGE CONTENT-->
<?= Html::beginForm(['vitrin/index', 'id' => $id], 'post', ['data-pjax' => '']); ?>
<?php
echo Select2::widget([
'name' => 'name',
'data' => [1 => "First", 2 => "Second", 3 => "Third", 4 => "Fourth", 5 => "Fifth"],
'options' => [
 'placeholder' => 'Select a type ...',
 ],
 ]);
 ?>
 <?= Html::submitButton('Submit', ['class' => 'submit']) ?>
 <?= Html::endForm() ?>
 <!-- END PAGE CONTENT-->

和 AppAssets 类:

class AppAsset extends AssetBundle

public $basePath = '@webroot/themes/backend';
public $baseUrl = '@web/themes/backend/assets_t';
public $css = [
'bootstrap-rtl/css/bootstrap-rtl.min.css',
'bootstrap-rtl/css/bootstrap-responsive-rtl.min.css',
'font-awesome/css/font-awesome.css',
'fancybox/source/jquery.fancybox.css',
'uniform/css/uniform.default.css',
];
public $js = [
'bootstrap-rtl/js/bootstrap.min.js',
'js/jquery.blockui.js',
'uniform/jquery.uniform.min.js',
];

当使用 pjax 提交 _form 时。在 _formProduct 中,select2 不起作用。 (只显示加载 img)。

一般情况,当我使用Pjax时,其他Js代码都被停用了。

【讨论】:

没有解决办法?一般我用Pjax的时候,其他的Js代码都是停用的。【参考方案2】:

在您的视图标题中:

use kartik\select2\Select2Asset;

Select2Asset::register($this);

还要确保您拥有最新的 Select2 小部件。

【讨论】:

以上是关于select2 和 Pjax 在 yii2 中不能一起工作的主要内容,如果未能解决你的问题,请参考以下文章

yii2 Pjax的使用

Yii2 Pjax的简单使用

yii2 pjax使用

在使用pjax重新加载gridview后,在gridview上的Yii2模态表单更新没有显示

在 yii2 中验证 select2

Yii2网格视图使用ajax而不是Pjax进行过滤