yii2-multiple-input icon indicating copy to clipboard operation
yii2-multiple-input copied to clipboard

Can't handle model update

Open ArtMin96 opened this issue 1 year ago • 0 comments

I don't know how to organize the update part. If someone can help I will be grateful. Or suggest an alternative option.

Controller:

public function actionUpdate($id)
{
    /** @var Contact $model */
    $model = $this->findModel($id);

    $phones = $model->phone;

    return $this->render('update', [
        'model' => $model,
        'phones' => $phone
    ]);
}

Contact Model:

public function getPhone(): ActiveQuery
{
    return $this->hasMany(Phone::className(), ['contact_id' => 'id']);
}

Phone Model:

public function rules()
{
    return [
        [['contact_id'], 'integer'],
        [['number'], 'validatePhones', 'skipOnEmpty' => false],
    ];
}

Contact _form.php

// Other fields belongs to contact

// ...

// Contact phones
$form->field($phones, 'number')
    ->widget(\unclead\multipleinput\MultipleInput::className(), [
        'rendererClass' => \unclead\multipleinput\renderers\ListRenderer::className(),
        'min' => 1,
        'max' => 5,
        'allowEmptyList' => false,
        'enableError' => true,
        'enableGuessTitle' => true,
        'sortable' => true,
        'addButtonOptions' => [
            'class' => 'btn btn-primary',
            'label' => 'add' // also you can use html code
        ],
        'removeButtonOptions' => [
            'class' => 'btn btn-danger',
            'label' => 'remove' // also you can use html code
        ],
        'layoutConfig' => [
            'offsetClass' => 'col-md-offset-2',
            'labelClass' => 'col-md-2',
            'wrapperClass' => 'col-md-6',
            'errorClass' => 'col-md-offset-2 col-md-6',
            'buttonActionClass' => 'col-md-offset-1 col-md-2',
        ],
        'addButtonPosition' => [
            MultipleInput::POS_FOOTER,
        ],
        'iconSource' => MultipleInput::ICONS_SOURCE_FONTAWESOME,
        'model' => $phones,
        'columns' => [
            [
                'name' => 'number',
                'title' => $model->getAttributeLabel('number'),
                'type' => \app\widgets\Fields\Phone\PhoneInput::className(),
                'options' => [
                    'jsOptions' => [
                        'allowDropdown' => true,
                        'nationalMode' => false,
                        'preferredCountries' => ['am'],
                    ]
                ]
            ]
        ]
    ])->label(false)

Result test

ArtMin96 avatar Aug 08 '22 09:08 ArtMin96