public function parseFields($data, $cart) { $fields = \Ecommerce\UserAdds\Field::getList(); $name = ''; foreach ($fields as $field) { if ($field->save && !empty($data[$field->id])) { $name .= htmlspecialchars($data[$field->id]) . ' '; } } $name = trim($name); $userAdds = Ecommerce\UserAdds::get([['user_id', $cart->user->id], ['name', $name]]); if (!$userAdds) { $userAdds = new Ecommerce\UserAdds(); $userAdds->user_id = $cart->user->id; $userAdds->name = $name; $userAdds->save(); foreach ($fields as $field) { if (!$field->save) { continue; } $userAddsValue = new Ecommerce\UserAdds\Value(); $userAddsValue->value = htmlspecialchars($data[$field->id]); $userAddsValue->useradds_field_id = $field->id; $userAddsValue->useradds_id = $userAdds->id; $userAddsValue->save(); } } $user = \Users\User::get($cart->user_id); foreach ($fields as $field) { $info = new \Ecommerce\Cart\Info(); $info->name = $field->name; $info->value = htmlspecialchars($data[$field->id]); $info->useradds_field_id = $field->id; $info->cart_id = $cart->id; $info->save(); $relations = []; if ($field->userfield) { if (strpos($field->userfield, ':')) { $path = explode(':', $field->userfield); if (!$user->{$path[0]}->{$path[1]}) { $user->{$path[0]}->{$path[1]} = $info->value; $relations[$path[0]] = $path[0]; } } else { if (!$user->{$field->userfield}) { $user->{$field->userfield} = $info->value; } } } foreach ($relations as $rel) { $user->{$rel}->save(); } $user->save(); } return $userAdds; }
<fieldset> <?php if (\Users\User::$cur->id) { $userAdds = Ecommerce\UserAdds::getList(['where' => ['user_id', \Users\User::$cur->id]]); $values = []; foreach ($userAdds as $userAdd) { $values[$userAdd->id] = $userAdd->values(['array' => true]); } if ($userAdds) { $form->input('select', 'userAddsId', 'Ваши контакты', ['values' => ['' => 'Выберите'] + Ecommerce\UserAdds::getList(['where' => ['user_id', \Users\User::$cur->id], 'forSelect' => true])]); echo '<hr />'; } ?> <script> var userAddsValues = <?php echo json_encode($values); ?> ; inji.onLoad(function () { $('[name="userAddsId"]').change(function () { var values = userAddsValues[$(this).val()]; for (key in values) { var value = values[key]; $('[name="userAdds[fields][' + value.useradds_value_useradds_field_id + ']"]').val(value.useradds_value_value); } }); }) </script> <?php } foreach (Ecommerce\UserAdds\Field::getList(['order' => ['weight', 'asc']]) as $field) {