Подскажите как вставить правильно данные при update (Select2)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
evgeniy123
Сообщения: 296
Зарегистрирован: 2011.11.01, 17:29

Подскажите как вставить правильно данные при update (Select2)

Сообщение evgeniy123 » 2017.11.12, 22:44

У меня сохранено значении в базе данных для модели cards (user_id + customer ). Сохранение идет нормально. Мне нужно что бы начальное значение select был бы

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


<option value="c_00012">Ivan  Moroz</option>
Где id - это value из одной таблицы, а имя - из другой.


Сейчас такое отображение:

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

<option value="c_00011" selected="">c_00011</option>

Аватара пользователя
futbolim
Сообщения: 1835
Зарегистрирован: 2012.07.08, 19:28
Откуда: Донецк

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение futbolim » 2017.11.12, 23:40

В чём проблема вывести имя из связанной модели?
Все говорят, что нужно кем-то мне становиться.
А я хотел бы остаться собой.

evgeniy123
Сообщения: 296
Зарегистрирован: 2011.11.01, 17:29

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение evgeniy123 » 2017.11.13, 00:26

futbolim писал(а):
2017.11.12, 23:40
В чём проблема вывести имя из связанной модели?
нужно что бы в value пошел custom_id, которые мы сохранили в custom table и отображаться имя пользователя со связанной модели чтобы человек видел имя, фамилию пользователя. содержание таблиц customer (user_id, customer_id), data_user (user_id, first_name, last_name).

caHek2x
Сообщения: 1173
Зарегистрирован: 2016.04.12, 20:41

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение caHek2x » 2017.11.13, 00:43

мне кажется вы не ответили на вопрос ...
вы же создали между моделями связи ?
хотя нет, вы же создали для таблиц модели ?
вот если у вас есть модели и настроены между ними связи то что именно у вас не получается ? сделать для селекта массив ? покажите как вы пробовали ...

evgeniy123
Сообщения: 296
Зарегистрирован: 2011.11.01, 17:29

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение evgeniy123 » 2017.11.14, 03:53

caHek2x писал(а):
2017.11.13, 00:43
мне кажется вы не ответили на вопрос ...
вы же создали между моделями связи ?
хотя нет, вы же создали для таблиц модели ?
вот если у вас есть модели и настроены между ними связи то что именно у вас не получается ? сделать для селекта массив ? покажите как вы пробовали ...
Controller:

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

...
public function actionUpdate($id)  // @todo tut ispravil nepravilnii vivod obratno v pole
    {
        $model = $this->findModel($id);
       
        if ($model->load(Yii::$app->request->post())) {

        if($model->save()) return $this->redirect(['view', 'id' => $model->id]);
        else {
            Yii::warning(serialize($model->getErrors()));
        }
        }
            return $this->render('update', [
                'model' => $model,
            ]);

    }
    ...
    
View:

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


        echo $form->field($model, 'customer')->widget(Select2::classname(), [
            'initValueText' => $cityDesc, // set the initial display text
            'options' => ['placeholder' => Yii::t('users', 'INTER_USER_NAME')],
            'pluginOptions' => [
                'theme' => Select2::THEME_BOOTSTRAP,
                  'allowClear' => true,
                'minimumInputLength' => 1,
                'language' => [
                    'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
                ],
                'ajax' => [
                    'url' => 'search-customer-by-username',
                    'dataType' => 'json',
                    'data' => new JsExpression('function(params) { return {q:params.term}; }')
                ],
                'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
                'templateResult' => new JsExpression('function(city) { return city.text; }'),
                'templateSelection' => new JsExpression('function (city) { return city.text; }'),
            ],
              ]);
              
            
Изображение


А вот теперь нужно вывести значение по умолчанию . value= custom_id , text = First_name, last_name. Работаю с моделью Cards

Аватара пользователя
Dominus
Сообщения: 358
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение Dominus » 2017.11.14, 18:34

Что то вроде этого:
userData - связь hasOne в модели User с User_data

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

public function getUsersArray()
    {
        $model = User::find()->all();
        $array = [];
        if ($model) {
            foreach ($model as $user) {
            	$customers = Customers::find()->where(['user_id' => $user->id])->one();
                if ($user->userData != null) {
                    $array[$customers->id] = ($user->userData->first_name || $user->userData->last_name) ? $user->userData->first_name . ' ' . $user->userData->last_name : $user->username;
                } else {
                    $array[$customers->id] = $user->username;
                }
            }
        }
        return $array;
    }
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

evgeniy123
Сообщения: 296
Зарегистрирован: 2011.11.01, 17:29

Re: Подскажите как вставить правильно данные при update (Select2)

Сообщение evgeniy123 » 2017.11.15, 00:00

Спасибо. Не досмотрел документацию по виджету и смекалки немного не хватило

Закрыто