UMIhelp

Разработка сайта на UMI.CMS => Шаблоны TPL => Тема начата: ivan23 от 12 Декабря 2012, 20:55:29

Название: Передача значений из одной формы в другую
Отправлено: ivan23 от 12 Декабря 2012, 20:55:29
Здравствуйте,

Есть форма на главной странице А (краткая) и форма расширенная Б (на внутренней странице). Поля названы одинаково. Как из А перенести заполненные значения в Б?

каким образом отобразить значения в форме переданные через GET или POST запрос.
К примеру как в форму (юзаем webform add и TPL шаблонизатор) добавить в поле емейл данные
http://test.ru/form/?email=test@test.com

стандартными методами не выходит.
http://www.askdev.ru/question/1265/Передача-переменных-из-одной-формы-в-другую-поля-input-select/ (http://www.askdev.ru/question/1265/Передача-переменных-из-одной-формы-в-другую-поля-input-select/)
есть решение на xslt
http://wiki.umisoft.ru/Использование_GET_и_POST_параметров_в_XSLT-шаблонах (http://wiki.umisoft.ru/Использование_GET_и_POST_параметров_в_XSLT-шаблонах)
но нам нужно на tpl

Помогите пожалуйста!
Название: Re:Передача значений из одной формы в другую
Отправлено: Vladimir от 13 Декабря 2012, 20:12:00
хм... что-то я не въехал в рецепт из Вики. Сперва они задали вручную(!) набор переменных в шаблоне, потом вручную(!) нарисовали форму, потом принимают эти же переменные. Ну да.... Но я бы хотел, чтобы переменные и поля инициировались автоматически по типу данных в нужном количестве и с нужными именами.

В tpl в по 2.8.5.3 с этим были сложности. Форма строится методом getCreateForm, который не принимает параметров из строки запроса.
Я, используя новый шаблонизатор, просто дублировал класс clientReflection и добавлял туда недостающий функционал.
Затем и для формы перепишете в кастом метод add, вызовете свой метод, свой getCreateFormCustom - и все должно получиться. Главное - тобы было совпадение имени поля и get-параметра или твердый алгоритм приведения имени.
Название: Re:Передача значений из одной формы в другую
Отправлено: Vladimir от 13 Декабря 2012, 20:40:12
Хотя, если вам не нужно редактировать данные, подгружая ранее сохраненные значения из БД, а только создавать новую форму, то, наверно, можно проще.
Фантазирую:
В шаблоне формы (/tpls/data/reflections/) вместо
<input type="text" name="%input_name%" value="%value%" size="15" />
пишем
<input type="text" name="%input_name%" value="%webforms valueGET('%name%','%value%')%" size="15" />

Затем пишем кастомный метод valueGET
public function valueGET($name,$value){
$get = getRequest($name);
$get = filterInputString($get);
$get = $get ? $get : $value;
return $get;
}
Повторюсь, важно, чтобы имя поля и параметра совпадали.
Название: Re:Передача значений из одной формы в другую
Отправлено: Vladimir от 13 Декабря 2012, 20:42:25
Аааа! Думал-думал, а почему же я сам не пошел по такому пути??  - выпадающие списки в пролете.
Название: Re:Передача значений из одной формы в другую
Отправлено: ivan23 от 24 Декабря 2012, 18:50:59
Была проблема передать данные из одной формы в другую.
Решение:
1. в /classes/modules/custom.php
добавляем функции:
// для обработки полей типа input
public function myget($v) { return(GetRequest($v)); }

// для обработки полей типа select
public function myget_sel($v)
{
$f=false;
if (GetRequest('option1')==$v) { $f=true; }
if (GetRequest('option2')==$v) { $f=true; }
if (GetRequest('option3')==$v) { $f=true; }
if ($f) { return(' selected'); }
return('');
}

2. в шаблоне делаем просто:
<input type="text" id="%name%" placeholder="" name="%input_name%" value="%custom myget(%name%)%">

а с SELECTом делаем так
$FORMS['reflection_field_relation_option'] = <<<END
<option value="%id%" %custom myget_sel(%id%)%>%name%</option>
END;

Все работает - удачи !
P.S. Уважаемые разработчики - сделайте нормальную документацию или отсыпте то что Вы там курите !!! Это не CMS, а пи#$% какой-то !!!
Название: Re:Передача значений из одной формы в другую
Отправлено: admin от 10 Января 2013, 09:49:34
Цитировать
P.S. Уважаемые разработчики - сделайте нормальную документацию или отсыпте то что Вы там курите !!! Это не CMS, а пи#$% какой-то !!!

 ivan23, это вам на официальный сайт umi надо) тут у нас лишь творческое объединение тех кто ищет и тех кто может чем-то помочь по мере своего альтруизма. http://umihelp.ru/info/about/