UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Veinard от 19 Июня 2014, 00:47:49

Название: Обработка формы в макросе saveinfo
Отправлено: Veinard от 19 Июня 2014, 00:47:49
Всем добрый день!
Подскажите с настройкой оформления заказа в один шаг.
Пользуюсь макросами из последней версии Юми, стандартными. Получилось вывести все формы. Но при нажатии на кнопку "Submit" происходит редирект на страницу мойсайт.ру/emarket/saveinfo/ на которой получаю ошибку об отсутствии страницы. Не могу понять что сделал не так :(, подскажите пожалуйста.


В файле purchasing_one_step.xsl:
	
<xsl:template match="result[@module = 'emarket' and @method = 'purchasing_one_step']">
        <xsl:apply-templates select="document('udata://emarket/purchasing_one_step')/udata" />
</xsl:template>

Далее там-же
<xsl:template match="udata[@module = 'emarket'][@method='purchasing_one_step']">
<!-- Запускаем ЭКШЕН SAVEINFO -->
<form method="post" action="{$lang-prefix}/emarket/saveinfo/">
<xsl:apply-templates select="onestep/customer" mode="personal"/>
<xsl:apply-templates select="onestep/delivery_choose" mode="delivery_choose"/>
<xsl:apply-templates select="onestep/delivery" mode="delivery_adres"/>
<xsl:apply-templates select="onestep/payment" mode="payment_choose"/>
<!--ТУТ ЕЩЕ КНОПКА -->
.....
</form>
</xsl:template>

Вывод форм делаю в шаблонах ниже примерно так:
<!-- Шаблон персональных данных -->	
<xsl:template match="customer" mode="personal">
<!-- Всяких хтмл -->
<fieldset class="site_form purchase_fields" >
<div class="customer onestep">
<xsl:apply-templates select="document(concat('udata://data/getEditForm/', @id))/udata" />
</div>
</fieldset>
<!-- Всяких хтмл -->
</xsl:template>

Аналогично - остальные:
<fieldset class="site_form purchase_fields" >
<div class="delivery_choose onestep">
<xsl:apply-templates select="items" mode="delivery-choose" />
</div>
</fieldset>

<fieldset class="site_form purchase_fields" >
<div class="delivery_adr onestep">
<xsl:apply-templates select="document(@xlink:href)/udata" />
</div>
</fieldset>

<fieldset class="site_form purchase_fields" >
<div class="payment onestep">
<xsl:apply-templates select="items/item" mode="payment_one_step" />
</div>
</fieldset>


Вот вроде-бы все верно сделал, но не работает, не пойму почему. Может, где-то какую-то глобальную переменную забыл, или записал что-то не верно?
Название: Re:Обработка формы в макросе saveinfo
Отправлено: admin от 22 Июня 2014, 19:15:33
Цитировать
происходит редирект на страницу мойсайт.ру/emarket/saveinfo/ на которой получаю ошибку об отсутствии страницы

это похоже на то, что у вас нет макроса saveinfo. Посмотрите наличие данной функции в файле /classes/modules/emarket/__purchasing.php

Если она есть, проверьте есть ли права на неё в /classes/modules/emarket/permissions.php

Если там все есть, пишите, будем думать дальше.
Название: Re:Обработка формы в макросе saveinfo
Отправлено: Veinard от 22 Июня 2014, 21:05:54
Цитировать
происходит редирект на страницу мойсайт.ру/emarket/saveinfo/ на которой получаю ошибку об отсутствии страницы

это похоже на то, что у вас нет макроса saveinfo. Посмотрите наличие данной функции в файле /classes/modules/emarket/__purchasing.php

Если она есть, проверьте есть ли права на неё в /classes/modules/emarket/permissions.php

Если там все есть, пишите, будем думать дальше.

Функция есть, но описана в файле "__purchasing_one_step.php", разрешение тоже прописано следующим образом:
<?php
$permissions = array(
'purchasing' => array(
'price', .......... 'purchasing_one_step', 'saveinfo',
),

..............
Название: Re:Обработка формы в макросе saveinfo
Отправлено: admin от 23 Июня 2014, 23:29:38
Но при нажатии на кнопку "Submit" происходит редирект на страницу мойсайт.ру/emarket/saveinfo/ на которой получаю ошибку об отсутствии страницы.

а как выглядит сообщение об отсутствии страницы? umi'вская 404 страница? или что-то другое?
Название: Re:Обработка формы в макросе saveinfo
Отправлено: Veinard от 24 Июня 2014, 02:46:22
Но при нажатии на кнопку "Submit" происходит редирект на страницу мойсайт.ру/emarket/saveinfo/ на которой получаю ошибку об отсутствии страницы.


а как выглядит сообщение об отсутствии страницы? umi'вская 404 страница? или что-то другое?
:-\

Выглядит как отсутствующая страница на моем сайте страница.
upage/emarket/saveinfo
<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.006567">
<error code="not-found">Не найдено</error>
</udata>

(https://photos-3.dropbox.com/t/0/AACaKEBekGAV98EfonrYvD-8CAGvSQsgm89Q5zcOHh61yg/12/237617286/png/1024x768/3/1403636400/0/2/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202014-06-24%20%D0%B2%202.33.55.png/6f2oJIB633vrDOAQKc4-C07Ppzg9iqQr1GsRzLh4Jmg)
Название: Re:Обработка формы в макросе saveinfo
Отправлено: admin от 24 Июня 2014, 22:12:50
а почему вы проверяете upage/emarket/saveinfo ? upage это же протокол для страниц существующих в структуре, а у вас страница /emarket/saveinfo это выполнения макроса.

Название: Re:Обработка формы в макросе saveinfo
Отправлено: Veinard от 24 Июня 2014, 23:48:45
а почему вы проверяете upage/emarket/saveinfo ?

На всякий случай %). Скриншот с тем что происходит - тоже прикрепил =)
Название: Re:Обработка формы в макросе saveinfo
Отправлено: admin от 25 Июня 2014, 09:34:31
В общем найдена проблема. Как это не банально, но у вас макрос в коде называется saveInfo, а не saveinfo (разница в одной заглавной букве). Если в xslt шаблоне с формой оформления в один шаг, поменять action с
action="{$lang-prefix}/emarket/saveinfo/"
на
action="{$lang-prefix}/emarket/saveInfo/"

все заработает.
Название: Re:Обработка формы в макросе saveinfo
Отправлено: Veinard от 25 Июня 2014, 10:25:28
Ураааа! Спасибо! Сегодня проверю :).

PS
Кстати, в разрешениях он ведь тоже назван saveinfo с маленькой буквы. Может лучше в коде поменять на маленькую букву? %).
Название: Re:Обработка формы в макросе saveinfo
Отправлено: admin от 25 Июня 2014, 10:41:00
если он изначально был с большой, то при обновлении системы он снова станет с большой, так что стоит ли?
Название: Re:Обработка формы в макросе saveinfo
Отправлено: Veinard от 26 Июня 2014, 15:24:59
Намек понял =). Спасибо. В документации тоже с большой буквы, я просто не обратил внимания значит %).