Страница 1 из 1

Правильный подход использования Select2

Добавлено: 2018.11.10, 05:03
Vi_ru_S
Всем привет. Скажите пожалуйста на сколько правильный подход использование такого кода во View

Код: Выделить всё

<?php

use kartik\select2\Select2;
use yii\helpers\ArrayHelper;
?>
<?=

$form->field($model, 'id_types_price', [
])->widget(Select2::classname(), [
    'language' => 'ru',
    'hideSearch' => true,
    'data' => ArrayHelper::map(\backend\models\CatalogTypesPriceNomenclature::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'),
    'options' => ['placeholder' => 'Выберете тип цены...', 'value' => 1],
]);
?>


<?= $form->field($model, 'buyer')->checkbox() ?>

<?= $form->field($model, 'provider')->checkbox() ?>
Если есть другие варианты более лаконичного использования выложите пожалуйста пример. Спасибо.

Re: Правильный подход использования Select2

Добавлено: 2018.11.10, 07:59
SiZE
Такого конечно же быть в представлении не должно

Код: Выделить всё

\backend\models\CatalogTypesPriceNomenclature::find()->select(['id', 'name'])->asArray()->all()
Результат из контроллера передаем в представление

Код: Выделить всё

$catalogTypesPriceNomenclatureList = ArrayHelper::map(\backend\models\CatalogTypesPriceNomenclature::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name'),
Зачем это?

Код: Выделить всё

'value' => 1
Обращай внимание на регистр className() !== classname(). Если php >=5.5 то пишем Select2::class

Код: Выделить всё

Select2::classname(),
Если во всем проекте используются одни и те же параметры, имеет смысл заинжектить их, а создавать объект Select2 надо будет через Yii::createObject(Select2::class) или, как в случае с вызовом ->widget достаточно передать Select2::class

Код: Выделить всё

'language' => 'ru',
например в конфиге

Код: Выделить всё

$config = [
    'container' => [
        'definitions' => [
            'namespace\to\Select2' => ['language' => 'ru'],
        ],
    ]
];
ну или наследовать.

Re: Правильный подход использования Select2

Добавлено: 2018.11.10, 14:21
Vi_ru_S
SiZE писал(а): 2018.11.10, 07:59
Зачем это?

Код: Выделить всё

'value' => 1
Это значение по умолчанию.

Re: Правильный подход использования Select2

Добавлено: 2018.11.12, 11:25
SiZE
Vi_ru_S писал(а): 2018.11.10, 14:21
SiZE писал(а): 2018.11.10, 07:59
Зачем это?

Код: Выделить всё

'value' => 1
Это значение по умолчанию.
Не