Добавление адреса доставки при регистрации — различия между версиями
Davidov (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9''' | ||
+ | |||
Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необходимо обработать событие регистрации и создать при регистрации новый адрес доставки. | Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необходимо обработать событие регистрации и создать при регистрации новый адрес доставки. | ||
В форме регистрации выведем поля для требуемого объекта через data getCreateForm() | В форме регистрации выведем поля для требуемого объекта через data getCreateForm() |
Версия 09:28, 5 июня 2013
Актуально для версии 2.9
Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необходимо обработать событие регистрации и создать при регистрации новый адрес доставки. В форме регистрации выведем поля для требуемого объекта через data getCreateForm() в форме появятся поля для ввода данных адреса вида: <input class="textinputs" type="text" value="" name="data[new][index]"> напишем обработчик события users_registrate, который будет создавать новый адрес доставки и указывать его в аккаунте пользователя. В файл ~/classes/modules/users/custom_events.php добавим строку
<?php
new umiEventListener("users_registrate", "users", "add_address_for_delivery");
?>
Теперь напишем обработчик add_address_for_delivery. В файл ~/classes/modules/users/__custom.php добавим после строки //TODO: Write here your own macroses
<?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;
}
?>
метод будет получать массив new из формы и заполнять созданный объект типа "Адрес доставки".