Пустые значения в Select2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dymsonn
Сообщения: 77
Зарегистрирован: 2018.06.13, 15:37

Пустые значения в Select2

Сообщение dymsonn »

Здравствуйте. Не понимаю, почему у меня в виджете kartik/Select2 выводятся пустые значения. Точнее, не могу сделать что бы они не выводились.
Таблица.
Табл : id, name, surname
1 имя1 null
2 имя2 null
И если выводить surname в параметре data виджета

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

'data'=> $model->surname
То выводятся пустые две строки. А как сделать что бы если surname null, то выводим name?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Пустые значения в Select2

Сообщение yiiliveext »

Начните с чтения документации к виджету
data: array the select option data items. The array keys are option values, and the array values are the corresponding option labels. The array can also be nested (i.e. some array values are arrays too). For each sub-array, an option group will be generated whose label is the key associated with the sub-array. If you have a list of data models, you may convert them into the format described above using \yii\helpers\ArrayHelper::map().
dymsonn
Сообщения: 77
Зарегистрирован: 2018.06.13, 15:37

Re: Пустые значения в Select2

Сообщение dymsonn »

Вопрос был в другом. Решил следующим образом:
в модели создал метод getName {
return !empty($this->name) ? $this->name : $this->surname;
}
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Пустые значения в Select2

Сообщение yiiliveext »

dymsonn писал(а): 2020.03.01, 12:18 Вопрос был в другом. Решил следующим образом:
в модели создал метод getName {
return !empty($this->name) ? $this->name : $this->surname;
}
В поле data должен быть массив, а не поле модели.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Пустые значения в Select2

Сообщение unknownby »

dymsonn писал(а): 2020.03.01, 12:18 Вопрос был в другом. Решил следующим образом:
в модели создал метод getName {
return !empty($this->name) ? $this->name : $this->surname;
}
Вот что тебе говорят там должно быть

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

'data' => ArrayHelper::map(YourModel::find()->all(), 'id', 'name'),
dymsonn
Сообщения: 77
Зарегистрирован: 2018.06.13, 15:37

Re: Пустые значения в Select2

Сообщение dymsonn »

Извиняюсь, писал в спешке. Правильнее будет написать

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

public function getNameOrSurname() {
return !empty($this->nameN) ? $this->nameN : $this->nameS;
}
где nameN и nameS это методы модели возвращающие массив ArrayHelper c name и surname соответственно.
А проблема с пустыми полями была в том, что в поля базы попадали пустые значения имен. Получалось, если name =null', а surname = 'Petr'l, то выводился Petr. А если name = '', а surname = 'Petr', то выводилось пустое значение. Не было проверки на пустоту. В getNameN и getNameS добавил эту проверку.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Пустые значения в Select2

Сообщение unknownby »

dymsonn писал(а): 2020.03.02, 12:45 Извиняюсь, писал в спешке. Правильнее будет написать

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

public function getNameOrSurname() {
return !empty($this->nameN) ? $this->nameN : $this->nameS;
}
где nameN и nameS это методы модели возвращающие массив ArrayHelper c name и surname соответственно.
А проблема с пустыми полями была в том, что в поля базы попадали пустые значения имен. Получалось, если name =null', а surname = 'Petr'l, то выводился Petr. А если name = '', а surname = 'Petr', то выводилось пустое значение. Не было проверки на пустоту. В getNameN и getNameS добавил эту проверку.
А если всё же сделать вот так?

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

'data' => ArrayHelper::map(YourModel::find()->all(), 'id', 'name_note'),
В модели

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

public function getname_note() {
return !empty($this->name) ? $this->name : $this->surname;
}
dymsonn
Сообщения: 77
Зарегистрирован: 2018.06.13, 15:37

Re: Пустые значения в Select2

Сообщение dymsonn »

Суть та же, а кода меньше. Спасибо.
Ответить