Добавление адреса доставки при регистрации

Материал из Umicms
Версия от 07:22, 29 октября 2012; Davidov (обсуждение | вклад) (Новая страница: «Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необ…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необходимо обработать событие регистрации и создать при регистрации новый адрес доставки. В форме регистрации выведем поля для требуемого объекта через data getCreateForm() в форме появятся поля для ввода данных адреса вида: <input class="textinputs" type="text" value="" name="data[new][index]"> напишем обработчик события users_registrate, который будет создавать новый адрес доставки и указывать его в аккаунте пользователя. В файл ~/classes/modules/users/custom_events.php добавим строку <sourse lang="php"> <?php new umiEventListener("users_registrate", "users", "add_address_for_delivery"); ?> </source> Теперь напишем обработчик add_address_for_delivery. В файл ~/classes/modules/users/__custom.php добавим после строки //TODO: Write here your own macroses <sourse lang="php"> <?php public function add_address_for_delivery(iUmiEventPoint $oEventPoint){ if ($oEventPoint->getMode() === "before") return true;

if ($oEventPoint->getMode() === "after") { $user_id = $oEventPoint->getParam("user_id"); $data=getRequest('data'); //var_dump($data);die(); $typesCollection = umiObjectTypesCollection::getInstance(); $typeId = $typesCollection->getBaseType('emarket', 'delivery_address'); $objectsCollection = umiObjectsCollection::getInstance(); $name='Address for customer #'.$user_id; $id_address=$objectsCollection->addObject($name,$typeId); $address=$objectsCollection->getObject($id_address); $data=$data['new']; foreach($data as $key=>$value){ $address->setValue($key,$value); $address->commit(); }

$user=$objectsCollection->getObject($user_id); $address_list=$user->getValue('delivery_addresses'); //var_dump($address_list);die(); $address_list[]=$id_address; $user->setValue('delivery_addresses',$address_list); $user->commit(); } return true; } ?> </source>

метод будет получать массив new из формы и заполнять созданный объект типа "Адрес доставки".