Как передать в SMARTY через $smarty->assign();
Данную функцию и использовать её дальше :
$sign = md5(MERCHANT_ID.':'.$key['price'].':'.MERCHANT_SECRET.':'.$key['id']);
Суть в том, что туда передаются данные из foreach
поэтому каждая функция $sign
уникальна в своём роде. Потом значение из $sign
заносится в форму и дальше идёт переход на сайт оплаты.
<input type='hidden' name='s' value='<?php print_r($sign); ?>'>
Примерно таким образом.
По просьбе, выкладываю весь код :
<div id="all"><?php foreach ($GetProductAll as $key) {
$sign = md5(MERCHANT_ID.':'.$key['price'].':'.MERCHANT_SECRET.':'.$key['id']);
?>
<div id="product"><div class="p-text"><?php print_r($key['name']); ?></div><div class="p-image"><img src="/www/images/products/<?php print_r($key['image']);?>"></div><img src="/www/images/products/rub.png"><div class="p-price"><?php print_r($key['price']);?></div><div class="p-buy">
<form method='get' action='http://www.free-kassa.ru/merchant/cash.php'>
<input type='hidden' name='m' value='<?php print_r(MERCHANT_ID); ?>'>
<input type='hidden' name='oa' value='<?php print_r($key['price']); ?>'>
<input type='hidden' name='o' value='<?php print_r($key['id']); ?>'>
<input type='hidden' name='s' value='<?php print_r($sign); ?>'>
<input type='hidden' name='us_product_id' value='<?php print_r($key['id']); ?>'>
<input type='hidden' name='us_login' value='<?php print_r($_COOKIE['login']); ?>'>
<input type='submit' id="pay" name='pay' value='КУПИТЬ'>
</form>
Вы пишите (ну или писали ранее) об использовании паттерна mvc. Поэтому будем считать, что у вас есть неких пхп код, где вы обрабатываете логику и подготавливаете данные, затем передаете их в tpl
-шаблон смарти и показываете его пользователю.
в пхп-коде вы, видимо, получаете некоторым образом данные GetProductAll
, предположим, что это выглядит примерно так:
class MyController extends BaseController {
public function someAction(){
$products = ...... ; // получение данных
$this->smarty->assign('GetProductAll', $products);
}
}
далее управление передается в шаблон (где-то в недрах вашего mvc происходит вызов $smarty->render('template_name.tpl'))
. В шаблоне (ну или уже видимо шаблон не используется) вы выводите циклом инпуты. При этом каждый раз вы считаете md5-хэш, а также используете данные куки. Два последних действия не корректны с точки зрения mvc-подхода. Данные должны быть подготовлены и переданы в шаблон на уровне контроллера.
В связи с этим, предлагаю расширить ваш метод контроллера следующим образом:
public function someAction(){
$products = ...... ; // получение данных
foreach($products as &$p){
$p['sign'] = md5(MERCHANT_ID.':'.$p['price'].':'.MERCHANT_SECRET.':'.$p['id']);
}
$this->smarty->assign('GetProductAll', $products);
$this->smarty->assign('login', $_COOKIE['login']);
$this->smarty->assign('merchantId', MERCHANT_ID);
}
То есть хэш считаем в контроллере и записывает в тот же самый массив продуктов. Данные логина тоже передаем в шаблон.
Тогда tpl-шаблон представления будет иметь следующий вид:
<div id="all">
{foreach $GetProductAll as $p}
<div id="product">
<div class="p-text">{$p.name}</div>
<div class="p-image">
<img src="/www/images/products/{$p.image}">
</div>
<img src="/www/images/products/rub.png">
<div class="p-price">{$p.price}</div>
<div class="p-buy">
<form method='get' action='http://www.free-kassa.ru/merchant/cash.php'>
<input type='hidden' name='m' value='{$merchantId}'>
<input type='hidden' name='oa' value='{$p.price}'>
<input type='hidden' name='o' value='{$p.id}'>
<input type='hidden' name='s' value='{$p.sign}'>
<input type='hidden' name='us_product_id' value='{$p.id}'>
<input type='hidden' name='us_login' value='{$login}'>
<input type='submit' id="pay" name='pay' value='КУПИТЬ'>
</form>
</div>
</div>
{/foreach}
Вот собственно и все, что вам необходимо сделать. Можно не изменять контроллер и шаблон, никто не мешает вызывать функцию непосредственно в смарти следующим образом:
{foreach $products as $p}
{$sign = md5(.....)}
<input value="{$sign}"/>
{/foreach}
зы: А что касается "передачи функции в смарти", то вообще это может выглядеть примерно так:
$smarty->assign('func', function(){ return "hello world"; })
// шаблон
<input value="{$func()}"/>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Устанавливаю Куки через phpИспользую данную запись: setCookie('usname', $_POST['name'], 2553454800, '/'); При этом в отладчике Chrome они отображаются как Session
php код генерит адрес потока с защищенным ключом и отдаёт плееру ссылку, при таком методе плеер пропадает, есть конфликт php с js, подскажите как...
Parse error: syntax error, unexpected 'if' (T_IF) in /opt/lampp/htdocs/transport/components/Routerphp on line 63
Что только не перепробовал что-бы авторизоваться на targetcom