@hollanditkzn

Как сделать, чтобы отображался get запрос в select2?

Как сделать так чтобы когда переходят по get запросу, то в select2 отображался в value значение которая пришла по get запросу. Пробовал вот так
Ссылка такая crm/frontend/web/create?phone=81111111111
<?= $form->field($client, 'phone')->widget(Select2::className(), [
                    'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone', 'fio'),
                    'value' => $_GET['phone'],//здесь должна отобразиться значение 81111111111
                    'options' => ['placeholder' => 'Введите номер телефона'],
                    'pluginOptions' => [
                        'allowClear' => true,
                        'language' => [
                            'noResults' => new JsExpression('function () { return "<a href=\"'. Url::to(['client/create']).'\">Добавить клиента</button>"; }'),
                        ],
                        'escapeMarkup' => new JsExpression('function (markup) {
        return markup;
    }')
                    ],
            ])?>

Может я что-то делаю неправильно?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
'value' => $_GET['phone'],//здесь должна отобразиться значение 81111111111

у Вас данные в списке в формате - ID -> номер телефона, т.е. в value Вы должны подставлять идентификатор этого телефона а не его номер. И используйте Yii::$app->request->get('phone') для получения значения параметра
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Что по Вашему тут получается?
ArrayHelper::map(Client::find()->all(), 'id', 'phone', 'fio'),

А получается там:
[
'fio1'=>['id1'=>'phone1','id2'=>'phone2'],
'fio2'=>['id3'=>'phone3','id4'=>'phone4'],
]

То есть ключи массива это фио и сработает это только если у Вас есть фио совпадающее с телефоном переданным через get. Да и многомерный массив для select - это не совсем то что надо.
Я так понимаю надо так:
ArrayHelper::map(Client::find()->all(), 'phone', 'phone'),
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы