close #2130 (#mqc1b4) Fixed: Edit user page roles deselect role then select it, it broke form roles field

This commit is contained in:
Cüneyt Şentürk 2021-06-22 11:25:11 +03:00
parent a0a776350c
commit 34e73de217
3 changed files with 25 additions and 4 deletions

View File

@ -37,7 +37,7 @@ class User extends FormRequest
$id = is_numeric($this->user) ? $this->user : $this->user->getAttribute('id'); $id = is_numeric($this->user) ? $this->user : $this->user->getAttribute('id');
$password = ''; $password = '';
$companies = $this->user->can('read-common-companies') ? 'required' : ''; $companies = $this->user->can('read-common-companies') ? 'required' : '';
$roles = $this->user->can('read-auth-roles') ? 'required' : ''; $roles = $this->user->can('read-auth-roles') ? 'required|array' : '';
if ($this->user->contact) { if ($this->user->contact) {
$email .= '|unique:contacts,NULL,' $email .= '|unique:contacts,NULL,'
@ -51,7 +51,7 @@ class User extends FormRequest
$id = null; $id = null;
$password = 'required|'; $password = 'required|';
$companies = 'required'; $companies = 'required';
$roles = 'required'; $roles = 'required|array';
} }
$email .= '|unique:users,email,' . $id . ',id,deleted_at,NULL'; $email .= '|unique:users,email,' . $id . ',id,deleted_at,NULL';

View File

@ -110,7 +110,17 @@ export default class Form {
} }
} else { } else {
if (form_element.checked) { if (form_element.checked) {
if (form_element.dataset.type != undefined) {
if (form_element.dataset.type == 'multiple') {
this[name] = [];
this[form_element.getAttribute('data-field')][name].push(form_element.value);
} else {
this[form_element.getAttribute('data-field')][name] = form_element.value; this[form_element.getAttribute('data-field')][name] = form_element.value;
}
} else {
this[form_element.getAttribute('data-field')][name] = form_element.value;
}
} else { } else {
this[form_element.getAttribute('data-field')][name] = []; this[form_element.getAttribute('data-field')][name] = [];
} }
@ -141,7 +151,17 @@ export default class Form {
} }
} else { } else {
if (form_element.checked) { if (form_element.checked) {
if (form_element.dataset.type != undefined) {
if (form_element.dataset.type == 'multiple') {
this[name] = [];
this[name].push(form_element.value);
} else {
this[name] = form_element.value; this[name] = form_element.value;
}
} else {
this[name] = form_element.value;
}
} else { } else {
this[name] = []; this[name] = [];
} }

View File

@ -25,6 +25,7 @@
{{ Form::checkbox($name, $item->$id, (is_array($selected) && count($selected) ? (in_array($item->$id, $selected) ? true : false) : null), array_merge([ {{ Form::checkbox($name, $item->$id, (is_array($selected) && count($selected) ? (in_array($item->$id, $selected) ? true : false) : null), array_merge([
'id' => 'checkbox-' . $name . '-' . $item->$id, 'id' => 'checkbox-' . $name . '-' . $item->$id,
'class' => 'custom-control-input', 'class' => 'custom-control-input',
'data-type' => (is_array($selected)) ? 'multiple' : 'single',
'v-model' => !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.'. $name : 'form.' . $name), 'v-model' => !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.'. $name : 'form.' . $name),
], $item_attributes)) }} ], $item_attributes)) }}