当我在yii2中使用pjax时。 selec2小部件停止工作。而select2独自工作。 (不合作)
我一起使用select2小部件和pjax。但是当用pjax提交表格时。在新的形式,选择2不起作用。 (只显示加载img)。请帮助我 什么是问题?
我想同时使用两者。
答案 0 :(得分:0)
在视图中:
<?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(); ?>
中的
:
<!-- 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代码被停用。
答案 1 :(得分:0)
在您的视图标题中:
use kartik\select2\Select2Asset;
Select2Asset::register($this);
还要确保拥有最新的Select2小部件。