Передача email пользователя в форме

#
Передача email пользователя в форме
Есть форма отправки письма с сайта, сделанного через форму. Нужно чтоб в поле email отображался email пользователя. Для этого использую код:

$SiteUsers = & singleton('SiteUsers';
$site_users_id = $SiteUsers->GetCurrentSiteUser();
$aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);
$fill_value = array();
$fill_value['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);

Потом в коде вставил $fill_value

$forms->ShowForm($forms_id, to_str($GLOBALS['LA']['xsl_show_form']), $fill_value);

Но в поле Email так ничего и не появилось. Может я в "Значение по умолчанию" не то вписал? Сейчас у меня там написано {external_propertys/site_users_email}.
#
Re: Передача email пользователя в форме
а посмотрите, это значение у вас в xml появляется?
www.ваш_сайт.ру/страница_с_формой/?show_xml=1 - и отобразить там нужный xml. Есть там этот email? и если есть, то где он?
Возможно он будет иметь адрес что-то типа /document/site_users_email, обычно все external_propertys вписываются в начало документа.
Заказов не беру. Консультирую редко.
#
Re: Передача email пользователя в форме
Да, есть..В самом верху.
<site_users_email>mail@mail.ru</site_users_email>
И как сделать чтоб он в поле появился?
#
Re: Передача email пользователя в форме
Так что мне нужно вписать в поле «Значение по умолчанию», чтоб там появился email? {external_propertys/site_users_email} не работает. Сам e-mail передается в самом верху
<site_users_email>mail@mail.ru</site_users_email>

но там где он должен быть вот так

<name>e-mail</name>
<field_text_name>E-mail</field_text_name>
<field_default_value></field_default_value>

то есть в <field_default_value> ничего нет, а должен быть передаваемый email
#
Re: Передача email пользователя в форме
Чувствую ответа я не дождусь...
#
Re: Передача email пользователя в форме
ffardz писал(а):
Так что мне нужно вписать в поле «Значение по умолчанию», чтоб там появился email?
В поле где? В центре администрирования что-ли? Так там вообще ничего не надо писать! Вы себе похоже не представляете где в hostcms заканчивается php и где начинается xsl, и кидаете все в одну кучу.

Нужно править xsl-шаблон, который отображает форму.
Найти в нем тот template который рисует поле для указания email, и в нем сделать сначала проверку того что он рисует именно email и именно от этой формы (например по id элемента формы, который можно посмотреть в админке), а потом проверить есть ли значение у узла "/document/site_users_email", или как он у вас там называется, (который в самом верху и в нем вписан переданный вами email) и если этот узел не пустой то вывести его содержимое в качестве значения данного поля.

Написано громоздко, а исправлений - от силы с полдесятка строчек.
Заказов не беру. Консультирую редко.
#
Re: Передача email пользователя в форме
Суть понял, но ничего не получается. Вот что вывел  ?show_xml

<document>
<site_users_email>mail@yandex.ru</site_users_email>
...
<field>
         <name>e-mail</name>
         <field_text_name>E-mail</field_text_name>
         <field_default_value></field_default_value>

Теперь что надо прописать в XSL шаблоне формы до меня не дошло. Вот вывод скрытого поля, куда мне надо вставить этот email в значение по умолчанию.

<!-- скрытое поле -->
<xsl:if test="type=7">
   <input type="hidden" name="{name}" value="{value}"/>
</xsl:if>

То есть надо чтобы получилось вот так.

<document>
<site_users_email>mail@yandex.ru</site_users_email>
...
<field>
         <name>e-mail</name>
         <field_text_name>E-mail</field_text_name>
         <field_default_value>mail@yandex.ru</field_default_value>
#
Re: Передача email пользователя в форме
нет, вот так не будет при всем желании в узел field_default_value ваш емайл не вставится, хоть тресни! Потому что значение по умолчанию не может задаваться переменной. Оно модет быть только каким-то не меняющимся набором символов.

Но самое интересное, что для нужного вам отображения в html адреса электронной почты, этот адрес в узле default и не нужен!

Если это в форме у вас создано скрытое поле с именем email, тогда в xsl нужно написать примерно так:
<!-- скрытое поле -->
<xsl:if test="type=7">
   <xsl:choose>
      <xsl:when test="name = 'e-mail'">
         <xsl:variable name="field_value">
            <xsl:if test="/document/site_users_email !=''">
               <xsl:value-of select="/document/site_users_email"/>
            </xsl:if>
            <xsl:if test="/document/site_users_email =''">
               <xsl:value-of select="value"/>
            </xsl:if>
         <xsl:variable>
         <input type="hidden" name="{name}" value="{$field_value}"/>
      </xsl:when>
      <xsl:otherwise>
         <input type="hidden" name="{name}" value="{value}"/>
      </xsl:otherwise>
   </xsl:choose>
</xsl:if>

синтаксис не проверял, могут быть опечатки.
Заказов не беру. Консультирую редко.
#
Re: Передача email пользователя в форме
Kotoff, спасибо. Все работает. Сам бы я до такого не додумался.
#
Re: Передача email пользователя в форме
ffardz, да пожалуйста ) И ничего сложного на самом деле
Заказов не беру. Консультирую редко.
Авторизация