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

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

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

我想同时使用两者。

select2 extention page

【问题讨论】:

    标签: widget yii2 jquery-select2 pjax


    【解决方案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 小部件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多