yii2-multiple-input
yii2-multiple-input copied to clipboard
Can't handle model update
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