diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index 76632a9dc..6b5511876 100644 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -83,7 +83,7 @@ class ConfigurationController extends Controller $slugs = $this->getDefaultConfigSlugs(); if(count($slugs)) { - return redirect()->route('admin.configuration.index', $slugs); + return redirect()->route('admin.configuration.index', $slugs); } return view($this->_config['view'], ['config' => $this->configTree]); diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php index 7a0399cd1..221ec19b3 100644 --- a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php @@ -10,15 +10,15 @@ $key = $item['key']; $key = explode(".", $key); - array_shift($key); $firstField = current($key); $secondField = next($key); - $key = implode(".", $key); + $thirdField = end($key); + + $name = $item['key'] . '.' . $field['name']; - $name = $key . '.' . $field['name']; ?> -
+
\ No newline at end of file diff --git a/packages/Webkul/Core/src/Core.php b/packages/Webkul/Core/src/Core.php index 9516f63d5..aeba6ae3c 100644 --- a/packages/Webkul/Core/src/Core.php +++ b/packages/Webkul/Core/src/Core.php @@ -545,8 +545,13 @@ class Core } } - if(!$coreConfigValue) + if (!$coreConfigValue) { + $fields = explode(".", $field); + array_shift($fields); + $field = implode(".", $fields); + return Config::get($field); + } return $coreConfigValue->value; } @@ -692,12 +697,7 @@ class Core if (isset($coreData['fields'])) { foreach ($coreData['fields'] as $field) { - $key = $coreData['key']; - $key = explode(".", $key); - array_shift($key); - - $key = implode(".", $key); - $name = $key . '.' . $field['name']; + $name = $coreData['key'] . '.' . $field['name']; if ($name == $fieldName ) { return $field; diff --git a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php index fb9de9779..7a8852f81 100644 --- a/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php +++ b/packages/Webkul/Core/src/Repositories/CoreConfigRepository.php @@ -38,83 +38,103 @@ class CoreConfigRepository extends Repository unset($data['channel']); } - foreach ($data as $method => $value) - { - foreach ($value as $key => $formData) - { - foreach (array_keys($formData) as $title) + foreach ($data as $method => $fieldData) { + $recurssiveData = $this->recuressiveArray($fieldData , $method); + + foreach ($recurssiveData as $fieldName => $value) { + $field = core()->getConfigField($fieldName); + + $channel_based = false; + $locale_based = false; + + if (isset($field['channel_based']) && $field['channel_based']) { + $channel_based = true; + } + + if (isset($field['locale_based']) && $field['locale_based']) { + $locale_based = true; + } + + if (isset($field['channel_based']) && $field['channel_based']) { - $fieldName = $method . '.' . $key . '.' .$title; - $value = $formData[$title]; - $field = core()->getConfigField($fieldName); - - $channel_based = false; - $locale_based = false; - - if (isset($field['channel_based']) && $field['channel_based']) { - $channel_based = true; + if (isset($field['locale_based']) && $field['locale_based']) + { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->where('channel_code', $channel) + ->get(); } - - if (isset($field['locale_based']) && $field['locale_based']) { - $locale_based = true; + else + { + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('channel_code', $channel) + ->get(); } - - if (isset($field['channel_based']) && $field['channel_based']) + } else + { + if (isset($field['locale_based']) && $field['locale_based']) { - if (isset($field['locale_based']) && $field['locale_based']) - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('locale_code', $locale) - ->where('channel_code', $channel) - ->get(); - } - else - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('channel_code', $channel) - ->get(); - } - } else - { - if (isset($field['locale_based']) && $field['locale_based']) - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->where('locale_code', $locale) - ->get(); - } - else - { - $coreConfigValue = $this->model - ->where('code', $fieldName) - ->get(); - } + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->where('locale_code', $locale) + ->get(); } - - if (!count($coreConfigValue) > 0) + else { - $this->model->create([ - 'code' => $fieldName, - 'value' => $value, - 'locale_code' => $locale_based ? $locale : null, - 'channel_code' => $channel_based ? $channel : null - ]); - } else - { - $updataData['code'] = $fieldName; - $updataData['value'] = $value; - $updataData['locale_code'] = $locale_based ? $locale : null; - $updataData['channel_code'] = $channel_based ? $channel : null; + $coreConfigValue = $this->model + ->where('code', $fieldName) + ->get(); + } + } - foreach ($coreConfigValue as $coreConfig) - { - $coreConfig->update($updataData); - } + if (!count($coreConfigValue) > 0) + { + $this->model->create([ + 'code' => $fieldName, + 'value' => $value, + 'locale_code' => $locale_based ? $locale : null, + 'channel_code' => $channel_based ? $channel : null + ]); + } else + { + $updataData['code'] = $fieldName; + $updataData['value'] = $value; + $updataData['locale_code'] = $locale_based ? $locale : null; + $updataData['channel_code'] = $channel_based ? $channel : null; + + foreach ($coreConfigValue as $coreConfig) + { + $coreConfig->update($updataData); } } } } } + + /** + * @param array $formData + * @param string $method + * @return array + */ + public function recuressiveArray(array $formData, $method) { + static $data =[]; + foreach ($formData as $form => $formValue) { + $value = $method . '.' . $form; + if (is_array($formValue)) { + $this->recuressiveArray($formValue, $value); + } else { + $data[$value] = $formValue; + } + } + + return $data; + } + + + + + + } \ No newline at end of file