Передача значения из дополнительного свойства информационного элемента в ТДС и XSL формы обратной связи

#
Передача значения из дополнительного свойства информационного элемента в ТДС и XSL формы обратной связи
Добрый день! Есть информационная система со списком инфоэлементов. Нужно по клику на инфоэлемент передать методом POST значение дополнительного свойства данного элемента в поле модуля формы.
Для этого использую form

   <xsl:template match="/informationsystem">
      <form action="/Bid/" method="POST" class="dataRasp">
            <xsl:apply-templates select="informationsystem_group" mode="groups"/>
            <xsl:apply-templates select="informationsystem_item[informationsystem_group_id = 0]"/>
      </form>
   </xsl:template>
<xsl:template match="informationsystem_item">
      <xsl:variable name="rasName" select="name"/>
      <xsl:variable name="rasData" select="property_value[tag_name='rasData']/value"/>
      <xsl:variable name="rasGroup" select="property_value[tag_name='rasGroup']/value"/>

      <input type="hidden" name="rasName" value="{$rasName}" />
   <input type="hidden" name="rasData" value="{$rasData}" />
   <input type="hidden" name="rasGroup" value="{$rasGroup}" />
      
<div class="SheduleLink" onclick="location.href = '/Bid/'; return false">
         <div class="case-table-cell v-middle w50 left">
            <div class="item">
               <div class="name"><xsl:value-of disable-output-escaping="yes" select="name"/></div>
               <div class="desc"><xsl:value-of disable-output-escaping="yes" select="description"/></div>
            </div>
         </div>
         <div class="case-table-cell v-middle w20 center name-style">
            <xsl:if test="$rasData !=''">
               <xsl:value-of disable-output-escaping="yes" select="property_value[tag_name='rasData']/value"/>
            </xsl:if>
         </div>
         <div class="case-table-cell v-middle w10 center name-style">
            <xsl:if test="$rasTime !=''">
               <xsl:value-of disable-output-escaping="yes" select="property_value[tag_name='rasTime']/value"/>
            </xsl:if>

         </div>
         <div class="case-table-cell v-middle w20 center name-style">
            <xsl:if test="$rasPrice !=''">
               <xsl:value-of disable-output-escaping="yes" select="property_value[tag_name='rasPrice']/value"/>
            </xsl:if>

         </div>
      </div>

   </xsl:template>


отправку значений делаю по событию клика


    $('.SheduleLink').click(function(){
        $('.dataRasp').submit();
    });


В тдс формы принимаю данные значения и передаю в xsl формы


if (Core::moduleIsActive('form'))
{
   $oForm = Core_Entity::factory('Form', Core_Array::get(Core_Page::instance()->libParams, 'formId'));
   $Form_Controller_Show = new Form_Controller_Show($oForm);

    if (isset($_POST['rasName']))
    {

        $rasName = $_POST['rasName'];
        $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('rasName')->value($rasName));
    }
    if (isset($_POST['rasData']))
    {
        $rasData = $_POST['rasData'];
        $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('rasData')->value($rasData));
    }
    if (isset($_POST['rasGroup']))
    {
        $rasGroup = $_POST['rasGroup'];
        $Form_Controller_Show->addEntity(Core::factory('Core_Xml_Entity')->name('rasGroup')->value($rasGroup));
    }


в xsl формы пытаюсь поставить полученные значения

   <xsl:template match="form_field">
      <!-- Не скрытое поле и не надпись -->
      <xsl:if test="type != 7 and type != 8">
         <div class="col-xs-12 col-sm-4">
            <div class="caption">
               <xsl:value-of select="caption" />
            </div>
            <div class="field">
               <!-- Текстовые поля -->
               <xsl:variable name="rasName" select="..//..//rasName"/>
               <xsl:variable name="rasData" select="..//..//rasData"/>
               <xsl:variable name="rasGroup" select="..//..//rasGroup"/>

               <xsl:if test="type = 0 or type = 1 or type = 2">
                  <xsl:choose>
                     <xsl:when test="$rasName != '' and @id = '87'">
                        <input type="text" name="{name}" value="{$rasName}" size="{size}" >

                           <xsl:choose>
                              <!-- Поле для ввода пароля -->
                              <xsl:when test="type = 1">
                                 <xsl:attribute name="type">password</xsl:attribute>
                              </xsl:when>
                              <!-- Поле загрузки файла -->
                              <xsl:when test="type = 2">
                                 <xsl:attribute name="type">file</xsl:attribute>
                              </xsl:when>
                              <!-- Текстовое поле -->
                              <xsl:otherwise>
                                 <xsl:attribute name="type">text</xsl:attribute>
                              </xsl:otherwise>
                           </xsl:choose>
                           <xsl:if test="obligatory = 1">
                              <xsl:attribute name="class">required</xsl:attribute>
                              <xsl:attribute name="minlength">1</xsl:attribute>
                              <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                           </xsl:if>
                        </input>
                     </xsl:when>
                     <xsl:when test="$rasData != '' and @id = '88'">
                        <input type="text" name="{name}" value="{$rasData}" size="{size}" >

                           <xsl:choose>
                              <!-- Поле для ввода пароля -->
                              <xsl:when test="type = 1">
                                 <xsl:attribute name="type">password</xsl:attribute>
                              </xsl:when>
                              <!-- Поле загрузки файла -->
                              <xsl:when test="type = 2">
                                 <xsl:attribute name="type">file</xsl:attribute>
                              </xsl:when>
                              <!-- Текстовое поле -->
                              <xsl:otherwise>
                                 <xsl:attribute name="type">text</xsl:attribute>
                              </xsl:otherwise>
                           </xsl:choose>
                           <xsl:if test="obligatory = 1">
                              <xsl:attribute name="class">required</xsl:attribute>
                              <xsl:attribute name="minlength">1</xsl:attribute>
                              <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                           </xsl:if>
                        </input>
                     </xsl:when>
                     <xsl:when test="$rasGroup != '' and @id = '86'">
                        <input type="text" name="{name}" value="{$rasGroup}" size="{size}" >

                           <xsl:choose>
                              <!-- Поле для ввода пароля -->
                              <xsl:when test="type = 1">
                                 <xsl:attribute name="type">password</xsl:attribute>
                              </xsl:when>
                              <!-- Поле загрузки файла -->
                              <xsl:when test="type = 2">
                                 <xsl:attribute name="type">file</xsl:attribute>
                              </xsl:when>
                              <!-- Текстовое поле -->
                              <xsl:otherwise>
                                 <xsl:attribute name="type">text</xsl:attribute>
                              </xsl:otherwise>
                           </xsl:choose>
                           <xsl:if test="obligatory = 1">
                              <xsl:attribute name="class">required</xsl:attribute>
                              <xsl:attribute name="minlength">1</xsl:attribute>
                              <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                           </xsl:if>
                        </input>
                     </xsl:when>
                     <xsl:otherwise>
                        <input type="text" name="{name}" value="" size="{size}" >

                           <xsl:choose>
                              <!-- Поле для ввода пароля -->
                              <xsl:when test="type = 1">
                                 <xsl:attribute name="type">password</xsl:attribute>
                              </xsl:when>
                              <!-- Поле загрузки файла -->
                              <xsl:when test="type = 2">
                                 <xsl:attribute name="type">file</xsl:attribute>
                              </xsl:when>
                              <!-- Текстовое поле -->
                              <xsl:otherwise>
                                 <xsl:attribute name="type">text</xsl:attribute>
                              </xsl:otherwise>
                           </xsl:choose>
                           <xsl:if test="obligatory = 1">
                              <xsl:attribute name="class">required</xsl:attribute>
                              <xsl:attribute name="minlength">1</xsl:attribute>
                              <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                           </xsl:if>
                        </input>
                     </xsl:otherwise>
                  </xsl:choose>

               </xsl:if>
               
               <!-- Радиокнопки -->
               <xsl:if test="type = 3 or type = 9">
                  <xsl:apply-templates select="list/list_item" />
                  <label class="input_error" for="{name}" style="display: none">Выберите, пожалуйста, значение.</label>
               </xsl:if>
               
               <!-- Checkbox -->
               <xsl:if test="type = 4">
                  <input type="checkbox" name="{name}">
                     <xsl:if test="checked = 1 or value = 1">
                        <xsl:attribute name="checked">checked</xsl:attribute>
                     </xsl:if>
                  </input>
               </xsl:if>
               
               <!-- Textarea -->
               <xsl:if test="type = 5">
                  <textarea name="{name}" cols="{cols}" rows="{rows}" wrap="off">
                     <xsl:if test="obligatory = 1">
                        <xsl:attribute name="class">required</xsl:attribute>
                        <xsl:attribute name="minlength">1</xsl:attribute>
                        <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                     </xsl:if>
                     <xsl:value-of select="value" />
                  </textarea>
               </xsl:if>
               
               <!-- Список -->
               <xsl:if test="type = 6">
                  <select name="{name}">
                     <xsl:if test="obligatory = 1">
                        <xsl:attribute name="class">required</xsl:attribute>
                        <xsl:attribute name="title">Заполните поле <xsl:value-of select="caption" /></xsl:attribute>
                     </xsl:if>
                     <option value="">...</option>
                     <xsl:apply-templates select="list/list_item" />
                  </select>
               </xsl:if>
            </div>
         </div>
      </xsl:if>
      
      <!-- скрытое поле -->
      <xsl:if test="type = 7">
         <input type="hidden" name="{name}" value="{value}" />
      </xsl:if>
      
      <!-- Надпись -->
      <xsl:if test="type = 8">
         <div class="row">
            <div class="caption"></div>
            <div class="field">
               <strong><xsl:value-of select="caption" /></strong>
            </div>
         </div>
      </xsl:if>
      <xsl:if test="position() mod 3=0">
         <xsl:text disable-output-escaping="yes">
            &lt;/div&gt;
            &lt;div class="row"&gt;
         </xsl:text>
      </xsl:if>
   </xsl:template>


Значения подставляются, но не корректно. Что-то я не учел))) может, кто-то делал что-то подобное, буду очень признателен за подсказку. Спасибо
SNN
#
Re: Передача значения из дополнительного свойства информационного элемента в ТДС и XSL формы обратной связи
S.Nikol писал(а):
Нужно по клику на инфоэлемент передать методом POST значение дополнительного свойства данного элемента в поле модуля формы.

S.Nikol,
Видно ваша форма не отправляет POST судя по:
<div class="SheduleLink" onclick="location.href = '/Bid/'; return false">

Когда вы пишите обратное:
$('.SheduleLink').click(function(){
        $('.dataRasp').submit();
    });
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Передача значения из дополнительного свойства информационного элемента в ТДС и XSL формы обратной связи
здесь две обработки события, в первом случае
<div class="SheduleLink" onclick="location.href = '/Bid/'; return false">

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

$('.SheduleLink').click(function(){
        $('.dataRasp').submit();
    });

нелогично, конечно.. просто код в режиме тэста пока)
вот так правильнее.. но проблема остается прежней(

    $('.SheduleLink').click(function(){
        $('.dataRasp').submit();
        window.location = "/Bid/";
    });

SNN
#
Re: Передача значения из дополнительного свойства информационного элемента в ТДС и XSL формы обратной связи
S.Nikol писал(а):
вот так правильнее.. но проблема остается прежней(

Не согласен с Вами. Такое поведение не правильное:
$('.SheduleLink').click(function(){
        $('.dataRasp').submit();
        window.location = "/Bid/";
    });

Так как во первых будет POST запрос на узел "/Bid/" и перезагрузится страница. А это в свою очередь:
window.location = "/Bid/";

Даже не выполнится, так как произошла перезагрузка страницы.
Почему POST не обрабатывается для Формы если это модуль формы то посмотрите стандартный ТДС обработки формы, там увидите нечто такое:
if (!is_null(Core_Array::getPost($oForm->button_name)))
   {
      $Form_Controller_Show
         ->values($_POST + $_FILES)
         // 0 - html, 1- plain text
         ->mailType(Core_Array::get(Core_Page::instance()->libParams, 'mailType'))
         ->mailXsl(
            Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'notificationMailXsl'))
         )
         ->mailFromFieldName(Core_Array::get(Core_Page::instance()->libParams, 'emailFieldName'))
         ->process();
   }

В форме должна быть еще кнопка SUBMIT -> $oForm->button_name
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Авторизация