UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 12 Января 2015, 23:07:16

Название: Редактирование полей в личном кабинете покупателя
Отправлено: Axiomateria от 12 Января 2015, 23:07:16
Здравствуйте!
Надо отредактировать личный кабинет по примерному адресу www.site.ru/emarket/personal/ зарегистрированного покупателя так, что бы добавить к полям с его персональной информацией (логин/пароль/e-mail и т.п.) ещё и его данные адреса доставки в таком же простом виде, как они и выглядят при оформлении заказа на странице заполнения данный полей с адресом доставки (город/улица\дом и т.п.)
И вот что я делаю - исходя из руководства: http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/emarket_purchase/#xslt-templating
в файле шаблонизатора demodizzy ...\xslt\modules\users\registration.xsl в код  добавляю строку
<xsl:apply-templates select="document(concat('udata://data/getCreateForm/', $user-id))" /> :
 <xsl:template match="udata[@method = 'settings']">
        <table>
            <tr>
                <td valign="top" width="20%">
                    <xsl:apply-templates select="document(concat('udata://data/getEditForm/', $user-id))" mode="portrait" />
                </td>
                <td valign="top">                 
                    <form enctype="multipart/form-data" method="post" action="{$lang-prefix}/users/settings_do/" id="con_tab_profile" class="form-inline">
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&login;:</xsl:text>
                                </span>
                                <input type="text" name="login" disabled="disabled" value="{$user-info//property[@name = 'login']/value}" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&password;:</xsl:text>
                                </span>
                                <input type="password" name="password" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&password-confirm;:</xsl:text>
                                </span>
                                <input type="password" name="password_confirm" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&e-mail;:</xsl:text>
                                </span>
                                <input type="text" name="email" class="form-control" value="{$user-info//property[@name = 'e-mail']/value}" />
                            </label>
                        </div>
                        <div class="float1"/>
                        <xsl:apply-templates select="document(concat('udata://data/getEditForm/', $user-id))" />
                       
                        <xsl:apply-templates select="document(concat('udata://data/getCreateForm/', $user-id))" />

                        <div class="form-group col-md-12 col-sm-12 col-xs-12">
                            <input type="submit" class="btn btn-primary" value="&save-changes;" />
                        </div>
                    </form>             
                </td>
            </tr>
        </table>
    </xsl:template>

В результате добавилось одно только поле и то не то, что надо:

<label title="">
    <span>id статуса:</span>
    <input type="text" name="data[new][publish_status_id]" value="" class="form-control">
</label>

Подскажите, пожалуйста, что я пропустил ?
Название: Re:Редактирование полей в личном кабинете покупателя
Отправлено: admin от 14 Января 2015, 15:45:42
я правильно понимаю, что получилось вывести информация для редактирования личной информации пользователя, но остался вопрос с выводом списка ранее введенных адресов и возможность добавить новый адрес?
Название: Re:Редактирование полей в личном кабинете покупателя
Отправлено: Axiomateria от 14 Января 2015, 18:14:47
я правильно понимаю, что получилось вывести информация для редактирования личной информации пользователя, но остался вопрос с выводом списка ранее введенных адресов и возможность добавить новый адрес?
Да, Вы правильно понимаете и речь идёт о странице пользователя в его личном кабинете.
Название: Re:Редактирование полей в личном кабинете покупателя
Отправлено: admin от 14 Января 2015, 18:40:12
по сути макрос на который вы ссылаетесь в форме /users/settings_do/ не работает с адресами, то есть он может связать пользователя с какими-то адресами, но не менять или добавлять их

Если вам надо организовать рбаоту с адресами, то либо делаем это в отдельном блоке form с отдельным action, либо делаем это через ajax опять же на отдельный action

Второй момент в том, что именно вы хотите дать вашему пользователю делать с адресами?

Если удалять, то стоит помнить, что данный адрес может использоваться в каком-то уже совершенном заказе и при удалении он пропадет от туда. Так что, адрес надо не удаль, а отвязывать от пользователя.

Если вы хотите дать возможность редактировать уже существующие адреса, то опять же помните, что они поменяются во всех заказах, в которых указан данный адрес.

Если хотите добавлять адрес, то тут нет подводных камней, просто добавляем адрес и привязываем его у текущему пользователю.

Насколько я знаю, чистых макросов именно для таких действий нет, так что их надо писать (куски нужного кода можно взять из макросов которые работают с адресами при оформлении заказа)

P.S. Для лучшего понимаю опишу логику сохранения адресов. Адрес - это, по сути, элемент справочника "Адрес доставки", в котором есть поля "индекс", "город" и т.п. Когда пользователь добавляет новый адрес, система добавляет новый элемент справочника "Адрес доставки", а затем изменяет поле "Адреса доставки" у конкретного пользователя (это поле типа выпадающий список множественного выбора, который использует справочник "Адрес доставки")