Class common\widgets\Select2\Select2

Inheritancecommon\widgets\Select2\Select2 » kartik\select2\Select2

Виджет выбора значений из списка с использованием jquery плагина Select2.

Содержит следующие возможности:

  • Имеет возможность искать результаты, используя ajax запрос на страницу виджета;
  • Включение ajax поиска при превышении минимального количества значений в списке, заданных в конфигурации;
  • Возможность выбрать значение из грида common\widgets\GridView\GridView;
  • Мультивыбор значений;
  • Хранение значения, даже при обновлении страницы, при использовании виджета common\widgets\Breadcrumbs\Breadcrumbs;
  • Вывод нескольких полей запроса в результат поиска, перечисленных через запятую.
<?= $form->field($modelForm, 'build_id')->select2([
    'activeRecordClass' => Build::className(),
    'queryCallback' => function (ActiveQuery $query) {
        return $query->select(['build_id', 'build_name']);
    },
    'ajaxConfig' => [
        'enabled' => true,
        'searchAjaxCallback' => function (ActiveQuery $query, $searchString) {
            $query->andWhere(['like', 'build_name', $searchString]);
        },
        'minRecordsCountForUseAjax' => 50,
    ],
    'wkkeep' => true,
    'wkicon' => 'home',
    'selectionGridUrl' => ['build/index'],
    'multiple' => true,
]); ?>

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
$activeRecordAttribute string Имя атрибута класса \yii\db\ActiveRecord, используемой атрибутом формы. common\widgets\Select2\Select2
$activeRecordClass string Полное имя класса \yii\db\ActiveRecord, используемое атрибутом формы. common\widgets\Select2\Select2
$ajaxConfig array Конфигурация ajax поиска результатов. common\widgets\Select2\Select2
$exceptAttributesFromResult array Массив имен атрибутов, которые следует искючить из результатов поиска common\widgets\Select2\Select2
$exceptPrimaryKeyFromResult boolean Если true, исключить первичные ключи в результатах поиска, по умолчанию true common\widgets\Select2\Select2
$multiple boolean Если true, то разрешить мультивыбор значений, по умолчанию false common\widgets\Select2\Select2
$queryCallback Closure Анонимная функция для формирования строк результатов поиска Select2. common\widgets\Select2\Select2
$selectionGridUrl string Url страницы с гридом common\widgets\GridView\GridView. common\widgets\Select2\Select2
$theme string Переопределенная тема на Bootstrap базового виджета \kartik\select2\Select2. common\widgets\Select2\Select2
$wkicon string Имя класса иконок FontAwesome, для добавления иконки слева относительно виджета. common\widgets\Select2\Select2
$wkkeep boolean Если true, хранить выбранные значения в хлебных крошках, для восстановления при обновлении страницы, по умолчанию false common\widgets\Select2\Select2

Public Methods

Hide inherited methods

MethodDescriptionDefined By
init() Инициализация виджета. common\widgets\Select2\Select2
run() Выполнение виджета common\widgets\Select2\Select2

Property Details

$activeRecordAttribute public property

Имя атрибута класса \yii\db\ActiveRecord, используемой атрибутом формы. \yii\db\ActiveRecord

Заполняется в случае, если имя утрибута формы, отличается от имени атрибута $activeRecordClass.

По умолчанию $this->attribute

$activeRecordClass public property

Полное имя класса \yii\db\ActiveRecord, используемое атрибутом формы. \yii\db\ActiveRecord

public string $activeRecordClass null
$ajaxConfig public property

Конфигурация ajax поиска результатов.

Содержит следующие опции ключей массива:

Имя ключа массива Тип значения Значение по умолчанию Описание
enabled bool true, если сконфигурирована опция searchAjaxCallback, иначе false Включить ajax поиск результатов
searchAjaxCallback \Closure null Анонимная функция для задания условия поиска. Содержит следующие параметры:
$query - Класс \yii\db\ActiveQuery, используемый для поиска результатов.
$searchString - Строка поиска, введенная пользователем.
minRecordsCountForUseAjax int 100 Лимит количества записей результатов, при превышении которого включается Ajax поиск
onlyAjax bool false Использовать только Ajax поиск результатов. В случае true, опция minRecordsCountForUseAjax игнорируется.

Пример:

<?= $form->field($modelForm, 'build_id')->select2([
    'activeRecordClass' => Build::className(),
    'queryCallback' => BuildQuery::select(),
    'ajaxConfig' => [
        'enabled' => true,
        'searchAjaxCallback' => function(ActiveQuery $query, $searchString) {
            $query->andWhere(['like', 'build_name', $searchString])
                ->orWhere(['like', 'build_description', $searchString]);
        },
        'onlyAjax' => true,
    ],
]); ?>
public array $ajaxConfig null
$exceptAttributesFromResult public property

Массив имен атрибутов, которые следует искючить из результатов поиска

$exceptPrimaryKeyFromResult public property

Если true, исключить первичные ключи в результатах поиска, по умолчанию true

$multiple public property

Если true, то разрешить мультивыбор значений, по умолчанию false

public boolean $multiple false
$queryCallback public property

Анонимная функция для формирования строк результатов поиска Select2.

Используйте метод select() \yii\db\ActiveQuery для выбора полей, которые будут отображаться в результатах через запятую.

 function(ActiveQuery $query) {
     $query->select(['id', 'code', 'description']);
 }
public Closure $queryCallback null
$selectionGridUrl public property

Url страницы с гридом common\widgets\GridView\GridView. В гриде добавляется кнопка выбора значения. При выборе значения происходит переход на страницу с виджетом common\widgets\Select2\Select2 с уже выбранным значением из грида.

public string $selectionGridUrl null
$theme public property

Переопределенная тема на Bootstrap базового виджета \kartik\select2\Select2. \kartik\select2\Select2

public string $theme self::THEME_BOOTSTRAP
$wkicon public property

Имя класса иконок FontAwesome, для добавления иконки слева относительно виджета.

    <?= $form->field($modelForm, 'build_id')->select2([
            'activeRecordClass' => Build::className(),
            'queryCallback' => BuildQuery::select(),
            'wkicon' => 'home', // css класс иконки FontAwesome "fa fa-home"
    ]); ?>
public string $wkicon null
$wkkeep public property

Если true, хранить выбранные значения в хлебных крошках, для восстановления при обновлении страницы, по умолчанию false

public boolean $wkkeep false

Method Details

filterBinaryToString() protected method

protected void filterBinaryToString ( $value )
$value
filterPrimaryKeysAttributes() protected method

protected void filterPrimaryKeysAttributes ( array $resultArray )
$resultArray
filterStringToBinary() protected method

protected void filterStringToBinary ( $value )
$value
getDataQuery() protected method

protected \yii\db\ActiveQuery getDataQuery ( )
init() public method

Инициализация виджета.

public void init ( )
initAjaxMultiple() protected method

protected void initAjaxMultiple ( \yii\db\ActiveQuery $dataQuery )
$dataQuery
initAjaxSingle() protected method

protected void initAjaxSingle ( )
initConfig() protected method

protected void initConfig ( )
initDataMultiple() protected method

protected void initDataMultiple ( \yii\db\ActiveQuery $dataQuery )
$dataQuery
initSingle() protected method

protected void initSingle ( )
registerWKAssets() protected method

protected void registerWKAssets ( )
returnAjaxData() protected method

protected void returnAjaxData ( )
run() public method

Выполнение виджета

public void run ( )
selectedAttribute() protected method

protected void selectedAttribute ( )