From 34e73de21735c0077d8b670dd4e3f77e36591203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Tue, 22 Jun 2021 11:25:11 +0300 Subject: [PATCH] close #2130 (#mqc1b4) Fixed: Edit user page roles deselect role then select it, it broke form roles field --- app/Http/Requests/Auth/User.php | 4 ++-- resources/assets/js/plugins/form.js | 24 +++++++++++++++++-- .../partials/form/checkbox_group.blade.php | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/Http/Requests/Auth/User.php b/app/Http/Requests/Auth/User.php index 6ab6ffd81..9db010b5e 100644 --- a/app/Http/Requests/Auth/User.php +++ b/app/Http/Requests/Auth/User.php @@ -37,7 +37,7 @@ class User extends FormRequest $id = is_numeric($this->user) ? $this->user : $this->user->getAttribute('id'); $password = ''; $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) { $email .= '|unique:contacts,NULL,' @@ -51,7 +51,7 @@ class User extends FormRequest $id = null; $password = 'required|'; $companies = 'required'; - $roles = 'required'; + $roles = 'required|array'; } $email .= '|unique:users,email,' . $id . ',id,deleted_at,NULL'; diff --git a/resources/assets/js/plugins/form.js b/resources/assets/js/plugins/form.js index fe839c8a9..1bf095e6b 100644 --- a/resources/assets/js/plugins/form.js +++ b/resources/assets/js/plugins/form.js @@ -110,7 +110,17 @@ export default class Form { } } else { if (form_element.checked) { - this[form_element.getAttribute('data-field')][name] = form_element.value; + 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; + } + } else { + this[form_element.getAttribute('data-field')][name] = form_element.value; + } } else { this[form_element.getAttribute('data-field')][name] = []; } @@ -141,7 +151,17 @@ export default class Form { } } else { if (form_element.checked) { - this[name] = form_element.value; + 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; + } + } else { + this[name] = form_element.value; + } } else { this[name] = []; } diff --git a/resources/views/partials/form/checkbox_group.blade.php b/resources/views/partials/form/checkbox_group.blade.php index f304bbe19..f08b2d7a7 100644 --- a/resources/views/partials/form/checkbox_group.blade.php +++ b/resources/views/partials/form/checkbox_group.blade.php @@ -25,6 +25,7 @@ {{ 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, '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), ], $item_attributes)) }}