myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii2 как в выпадающем списке Select 2 kartik Вывести несколько значений?

Всем привет! Подскажите, пожалуйста в решении простого вопроса. Вывожу в форму данные в выпадающий список из другой таблицы c помощью виджета Select2 kartik для Yii2,
echo $form->field($model, 'judge_id')->widget(Select2::classname(), [
        'data' => ArrayHelper::map(\backend\models\Judge::find()->where(['status'=>1])->asArray()->all(), 'id', 'last_name'),
        'language' => 'ru',
        'options' => ['placeholder' => 'Выберите судью...'],
        'pluginOptions' => [
            'allowClear' => false
        ],

которая связана связью через модуль:
class JudgeComitet extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'judge_comitet';
    }

......

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getJudge()
    {
        return $this->hasOne(Judge::className(), ['id' => 'judge_id']);
    }

    public function getFullName()
    {
        return $this->judge->last_name.' '.$this->judge->name.' '.$this->judge->middle_name;
    }
}

Необходимо в выпадающий список выводить не только Фамилию (last_name), но и Имя (name) Отчество (midlle_name). Возможно ли это как-то сделать не используя Ajax? В views я сделал это с помощью функции:

public function getFullName()
{
     return $this->judge->last_name.' '.$this->judge->name.' '.$this->judge->middle_name;
}
  • Вопрос задан
  • 2281 просмотр
Решения вопроса 1
qonand
@qonand
Software Engineer
ArrayHelper::map прекрасно работает как с массивами так и с объектами, в Вашем случае метод getFullName работает только в контексте объекта, поэтому нет смысла выбирать данные в виде массива, замените
ArrayHelper::map(\backend\models\Judge::find()->where(['status'=>1])->asArray()->all(), 'id', 'last_name')

на
ArrayHelper::map(\backend\models\Judge::find()->where(['status'=>1])->all(), 'id', 'fullName')


P.S. формировать запросы к базе данных в View - это говнокод. Поэтому лучше вынесите их куда-нибудь в другое место
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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