Page 1 of 1

переменные smarty и массив $_POST. кааак?

Posted: Wed Jan 13, 2010 11:50 am
by mr_ozio
на странице находится форма, разумеется возвращает всё в массив $_POST (в моём случае).

но смарти не понимает синтаксис переменных $_POST[blah]. в хэлпе(http://www.smarty.net/manual/ru/languag ... iables.php) прочитал, что эквивалент для смарти - $_POST.blah, но эта переменная неизменно пуста.

в то же время, когда пытаюсь вытащить значение из массива в отдельную переменную с помощью {php}$blah = $_POST[blah];{/php} - страница просто с этой точки перестаёт грузиться.

как мне использовать переменную полученую с помощью формы в коде смарти?

Re: переменные smarty и массив $_POST. кааак?

Posted: Thu Jan 14, 2010 12:14 am
by dexel
Смарти предназначена для выдачи данных, например браузеру. Охапка переменных, которая передаётся в Smarty из PHP форматирутется смартЁй согласно шаблону, и выдаётся клиенту. Ничего более. И к посту Smarty никакого отношения не имеет. Только лишь выдаёт клиенту форму и жмэню хиденов. Это касательно формы вообще. А данные из $_POST лови в action. И если уж ты на CMSMS, то здесь они возвращаются массивом $parms того action, в который возвращает данные форма.

Re: переменные smarty и массив $_POST. кааак?

Posted: Thu Jan 14, 2010 5:23 am
by mr_ozio
> А данные из $_POST лови в action
непонятно что за action.

>здесь они возвращаются массивом $parms того action, в который возвращает данные форма.
пхп говорит что массив $params пуст. я так понимаю что спрашивать надо не у пхп, а у смарти, но не знаю как.

ну вот у меня ситуация. форма расширенного поиска. переменные которые форма возвращает мне необходимо использовать в шаблоне вывода списка продуктов и в зависимости от полученых параметров скрывать элементы каталога не проходящие параметры. т.е. тупо внутри {foreach} делать {if estate and estate and estate} с условиями передаваемыми формой.

есть какой-нибудь способ из тега {php} передавать переменные в смарти? есть, точно есть, но найти не могу.

Re: переменные smarty и массив $_POST. кааак?

Posted: Thu Jan 14, 2010 7:42 am
by von-hamster
Попробуй:

$smarty->assign('variable', 'value');

Если не прокатит попробуй добавить вначале $smarty = &$gCms->smarty;

Re: переменные smarty и массив $_POST. кааак?

Posted: Thu Jan 14, 2010 2:56 pm
by mr_ozio
воооо! спасибо! всё работает, всё получается)

Re: переменные smarty и массив $_POST. кааак?

Posted: Fri Jul 30, 2010 11:30 am
by MainFrame
Была такая же проблема. Совет von-hamstera либо не дошел, либо не совсем из той оперы.
Сам делал так:

Code: Select all

<!--Сама форма в tpl файле-->
<form method="post">
<select name="ban">
<option value="1">Разбанить</option>
<option value="0">Забанить</option>
</select>
<input type="submit" value="Ок">
</form>

<!--В зависимости от значения назначаем переменную для отправки ее в файл php и работы с ней там. $smarty.post.ban то же, что и $_POST['ban']-->
{if $smarty.post.ban==1}
{assign var="stat" value="1"}
{elseif $smarty.post.ban==0}
{assign var="stat" value="0"}
{/if}
Далее работаем в php файле:

Code: Select all

//Выполняем шаблон, чтобы переменные задействовались
$dead = $smarty->fetch('details.tpl');
//Получаем наше долгожданное значение $_POST['ban']
$tar=$smarty->get_template_vars('stat');

//Работаем с нашим значением

//Можно отправить полученные значения обратно в tpl файл
$smarty->assign('tar'       , $tar);
То есть начинаем работу в смарти, кидаем значение из формы в php для обработки на php, а потом возвращаемся обратно в смарти для окончания.Кабздец конечно, но что-то более адекватного способа в своем случае я не нашел.
Это я так, вдруг еще у кого геморрой возникнет в подобном месте.