Как правильно отправить множественный селект

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

Как правильно отправить множественный селект

Сообщение asisdes »

Доброго дня!! Решил привязать типа тэгов на страницу
Нашел в интернет решение, но в одном месте не могу допетрить!!!
Выводит и хранит данные правильно, а вот как записать Ж(

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

    public function setRealEstateService($tagsId)
    {
        $this->realEstateService = (array) $tagsId;  //не понятно откуда tagsId правильно сформировать...
    }

    public function afterSave($insert, $changedAttributes)
    {
        Servicelinks::deleteAll(['rs_id' => $this->id]);
        $values = [];
        foreach ($this->realEstateService as $id) {
            $values[] = [$this->id, $id];
        }
        self::getDb()->createCommand()
            ->batchInsert(Servicelinks::tableName(), ['rs_id', 'sr_id'], $values)->execute();

        parent::afterSave($insert, $changedAttributes);
    }
получается что с формы, с элемента множественного селекта я передаю массив чисел, которые я потом в АфтерСаве разберу по строчно и запишу в промежуточную таблицу!

никак не могу понять как правильно на форме это оформить если я использую расширение Kartik/select2

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

        $data = ArrayHelper::map(Service::find()->asArray()->all(), 'id', 'service');
        echo '<label class="control-label">Tag Multiple</label>';
        echo Select2::widget([
            'name' => 'tagsId',
            'model' => $model->tagsId,
            'value' => $model->getService(), // initial value
            'data' => $data,
            'options' => ['placeholder' => 'Select a color ...', 'multiple' => true],
            'pluginOptions' => [
                'tags' => true,
                'multiple' => true,
                'maximumInputLength' => 10,
            ],
        ]);
 

вот тут не понятно...
$this->realEstateService = (array) $tagsId;  //не понятно откуда tagsId правильно сформировать...
Изображение
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

Re: Как правильно отправить множественный селект

Сообщение asisdes »

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

        echo Select2::widget([
            //'name' => 'tagsId',
            'model' => $model,
            'attribute' => 'tagsId',
            'value' => $model->getService(), // initial value
 
выпрямил, так поле получается более правильное Realestate[tagsId][]

а вот теперь не понятно правильно ля сеттер и геттер оформлен... как проверить ... хз

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

    public function setRealEstateService()
    {
        $this->realEstateService = (array) $this->tagsId;
    }

    public function getRealEstateService()
    {
        return $this->realEstateService;
    }

    public function afterSave($insert, $changedAttributes)
    {
        echo $this->realEstateService;

        Servicelinks::deleteAll(['rs_id' => $this->id]);
        $values = [];
        foreach ($this->realEstateService as $id) {
            $values[] = [$this->id, $id];
        }
        self::getDb()->createCommand()
            ->batchInsert(Servicelinks::tableName(), ['rs_id', 'sr_id'], $values)->execute();

        parent::afterSave($insert, $changedAttributes);
    }
 
проперти закинул в сайв [['tagsId', 'realEstateService'], 'safe'],
Изображение
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

Re: Как правильно отправить множественный селект

Сообщение asisdes »

а тут еще у меня загвозка... так и не решил
Изображение
Ответить