Добавление адреса доставки при регистрации — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необ…»)
 
Строка 5: Строка 5:
 
напишем обработчик события users_registrate, который будет создавать новый адрес доставки и указывать его в аккаунте пользователя.
 
напишем обработчик события users_registrate, который будет создавать новый адрес доставки и указывать его в аккаунте пользователя.
 
В файл ~/classes/modules/users/custom_events.php добавим строку
 
В файл ~/classes/modules/users/custom_events.php добавим строку
<sourse lang="php">
+
<sourсe lang="php">
 
<?php
 
<?php
 
new umiEventListener("users_registrate", "users", "add_address_for_delivery");
 
new umiEventListener("users_registrate", "users", "add_address_for_delivery");
Строка 11: Строка 11:
 
</source>
 
</source>
 
Теперь напишем обработчик add_address_for_delivery. В файл ~/classes/modules/users/__custom.php добавим после строки //TODO: Write here your own macroses
 
Теперь напишем обработчик add_address_for_delivery. В файл ~/classes/modules/users/__custom.php добавим после строки //TODO: Write here your own macroses
<sourse lang="php">
+
<sourсe lang="php">
 
<?php
 
<?php
 
public function add_address_for_delivery(iUmiEventPoint $oEventPoint){
 
public function add_address_for_delivery(iUmiEventPoint $oEventPoint){

Версия 07:22, 29 октября 2012

Поставим задачу добавить адрес доставки при регистрации пользователя. Для этого нам необходимо обработать событие регистрации и создать при регистрации новый адрес доставки. В форме регистрации выведем поля для требуемого объекта через data getCreateForm() в форме появятся поля для ввода данных адреса вида: <input class="textinputs" type="text" value="" name="data[new][index]"> напишем обработчик события users_registrate, который будет создавать новый адрес доставки и указывать его в аккаунте пользователя. В файл ~/classes/modules/users/custom_events.php добавим строку <sourсe 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 <sourсe 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 из формы и заполнять созданный объект типа "Адрес доставки".