From fd25e31d96b82f1d9070ff64b891053474cd9b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Sat, 7 Mar 2020 13:25:35 +0300 Subject: [PATCH] Selectbox add new and validation message. --- .../assets/js/components/AkauntingSelect.vue | 39 ++++++++++++++++++- .../js/components/AkauntingSelectRemote.vue | 34 +++++++++++++++- .../partials/form/select_group.blade.php | 4 +- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/resources/assets/js/components/AkauntingSelect.vue b/resources/assets/js/components/AkauntingSelect.vue index 23f43665b..15c0aea31 100644 --- a/resources/assets/js/components/AkauntingSelect.vue +++ b/resources/assets/js/components/AkauntingSelect.vue @@ -393,6 +393,7 @@ import { Select, Option, OptionGroup, ColorPicker } from 'element-ui'; import AkauntingModalAddNew from './AkauntingModalAddNew'; import AkauntingModal from './AkauntingModal'; +import AkauntingMoney from './AkauntingMoney'; import AkauntingRadioGroup from './forms/AkauntingRadioGroup'; import AkauntingSelect from './AkauntingSelect'; import AkauntingDate from './AkauntingDate'; @@ -412,6 +413,7 @@ export default { AkauntingRadioGroup, AkauntingSelect, AkauntingModal, + AkauntingMoney, AkauntingDate, AkauntingRecurring, }, @@ -584,6 +586,7 @@ export default { AkauntingRadioGroup, AkauntingSelect, AkauntingModal, + AkauntingMoney, AkauntingDate, AkauntingRecurring, [ColorPicker.name]: ColorPicker, @@ -618,7 +621,41 @@ export default { onSubmit(event) { this.form = event; - axios.post(this.form.action, this.form.data()) + this.loading = true; + + let data = this.form.data(); + + FormData.prototype.appendRecursive = function(data, wrapper = null) { + for(var name in data) { + if (wrapper) { + if ((typeof data[name] == 'object' || data[name].constructor === Array) && ((data[name] instanceof File != true ) && (data[name] instanceof Blob != true))) { + this.appendRecursive(data[name], wrapper + '[' + name + ']'); + } else { + this.append(wrapper + '[' + name + ']', data[name]); + } + } else { + if ((typeof data[name] == 'object' || data[name].constructor === Array) && ((data[name] instanceof File != true ) && (data[name] instanceof Blob != true))) { + this.appendRecursive(data[name], name); + } else { + this.append(name, data[name]); + } + } + } + }; + + let form_data = new FormData(); + form_data.appendRecursive(data); + + window.axios({ + method: this.form.method, + url: this.form.action, + data: form_data, + headers: { + 'X-CSRF-TOKEN': window.Laravel.csrfToken, + 'X-Requested-With': 'XMLHttpRequest', + 'Content-Type': 'multipart/form-data' + } + }) .then(response => { this.form.loading = false; diff --git a/resources/assets/js/components/AkauntingSelectRemote.vue b/resources/assets/js/components/AkauntingSelectRemote.vue index 08a23d395..71ce64f14 100644 --- a/resources/assets/js/components/AkauntingSelectRemote.vue +++ b/resources/assets/js/components/AkauntingSelectRemote.vue @@ -681,7 +681,39 @@ export default { onSubmit(event) { this.form = event; - axios.post(this.form.action, this.form.data()) + let data = this.form.data(); + + FormData.prototype.appendRecursive = function(data, wrapper = null) { + for(var name in data) { + if (wrapper) { + if ((typeof data[name] == 'object' || data[name].constructor === Array) && ((data[name] instanceof File != true ) && (data[name] instanceof Blob != true))) { + this.appendRecursive(data[name], wrapper + '[' + name + ']'); + } else { + this.append(wrapper + '[' + name + ']', data[name]); + } + } else { + if ((typeof data[name] == 'object' || data[name].constructor === Array) && ((data[name] instanceof File != true ) && (data[name] instanceof Blob != true))) { + this.appendRecursive(data[name], name); + } else { + this.append(name, data[name]); + } + } + } + }; + + let form_data = new FormData(); + form_data.appendRecursive(data); + + window.axios({ + method: this.form.method, + url: this.form.action, + data: form_data, + headers: { + 'X-CSRF-TOKEN': window.Laravel.csrfToken, + 'X-Requested-With': 'XMLHttpRequest', + 'Content-Type': 'multipart/form-data' + } + }) .then(response => { this.form.loading = false; diff --git a/resources/views/partials/form/select_group.blade.php b/resources/views/partials/form/select_group.blade.php index 6744366ce..50b40e6e0 100644 --- a/resources/views/partials/form/select_group.blade.php +++ b/resources/views/partials/form/select_group.blade.php @@ -6,7 +6,7 @@ @if (!empty($attributes['v-error'])) :form-classes="[{'has-error': {{ $attributes['v-error'] }} }]" @else - :form-classes="[{'has-error': form.errors.get('{{ $name }}') }]" + :form-classes="[{'has-error': form.errors.has('{{ $name }}') }]" @endif icon="{{ $icon }}" @@ -28,7 +28,7 @@ @elseif (!empty($attributes['data-field'])) @interface="{{ 'form.' . $attributes['data-field'] . '.' . $name . ' = $event' }}" @else - @interface="form.{{ $name }} = $event" + @interface="form.errors.clear('{{ $name }}'); form.{{ $name }} = $event;" @endif @if (!empty($attributes['change']))