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

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
mr_ozio
Forum Members
Forum Members
Posts: 66
Joined: Wed Dec 24, 2008 9:07 pm

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

Post by mr_ozio »

на странице находится форма, разумеется возвращает всё в массив $_POST (в моём случае).

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

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

как мне использовать переменную полученую с помощью формы в коде смарти?
User avatar
dexel
Forum Members
Forum Members
Posts: 67
Joined: Sat Nov 29, 2008 12:22 pm

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

Post by dexel »

Смарти предназначена для выдачи данных, например браузеру. Охапка переменных, которая передаётся в Smarty из PHP форматирутется смартЁй согласно шаблону, и выдаётся клиенту. Ничего более. И к посту Smarty никакого отношения не имеет. Только лишь выдаёт клиенту форму и жмэню хиденов. Это касательно формы вообще. А данные из $_POST лови в action. И если уж ты на CMSMS, то здесь они возвращаются массивом $parms того action, в который возвращает данные форма.
mr_ozio
Forum Members
Forum Members
Posts: 66
Joined: Wed Dec 24, 2008 9:07 pm

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

Post by mr_ozio »

> А данные из $_POST лови в action
непонятно что за action.

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

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

есть какой-нибудь способ из тега {php} передавать переменные в смарти? есть, точно есть, но найти не могу.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

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

Post by von-hamster »

Попробуй:

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

Если не прокатит попробуй добавить вначале $smarty = &$gCms->smarty;
mr_ozio
Forum Members
Forum Members
Posts: 66
Joined: Wed Dec 24, 2008 9:07 pm

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

Post by mr_ozio »

воооо! спасибо! всё работает, всё получается)
MainFrame

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

Post 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, а потом возвращаемся обратно в смарти для окончания.Кабздец конечно, но что-то более адекватного способа в своем случае я не нашел.
Это я так, вдруг еще у кого геморрой возникнет в подобном месте.
Post Reply

Return to “Russian - русский”