Здравствуйте уважаемые гуру юми цмс! У меня такой вопрос:
Есть форма которая по лицевому счету отправляет на сервер биллинга запрос и возвращает баланс:
<form name="lic" method="post" action="/stat.php">
<table align="center" CELLSPACING="3">
<tr>
<td width="50%">Введите номер лицевого счёта </td>
<td width="50%" align="center">
<input name="lic" type="text" size="46">
</td>
</tr>
<tr>
<td> </td>
<td align="center"><font size="0" color="grey">должен состоять из цифр и содержать не более 8 символов</font></td>
</tr>
</table>
<div align="center"><br>
<input type="submit" name="submit" value="Отправить">
</div>
</form>
И есть скрипт каторый это обрабатывает:
<?php
if ($_POST['submit']) {
if (preg_match('/^\d{1,8}+$/',$_POST['lic']))
{
unset ($lines);
$lines=file("http://mysait.ru/cgi-bin/Script.cgi?ACCOUNT=" . htmlspecialchars($_POST['lic']));
if ($lines[0]==1) {
echo "<p class=\"ballance_fail\">" . $lines[1] . "</p><br>";
} else {
$lines[1]=preg_replace('/\n/','',$lines[1]);
echo "<div id=\"bal\"><p class=\"ballance_result\">Состояние лицевого счета "."<b>" . htmlspecialchars($_POST['lic']) . "</b>". " на " . preg_replace("/\n/","",$lines[2] . "<br>");
echo "составляет: ";
echo preg_match('/^-/',$lines[1])?"<b><font color=\"red\">".$lines[1]."</font></b>":$lines[1];
echo " руб.</p></div>";
}
} else {
echo "<div id=\"bal\"><p class=\"ballance_fail\"><font color=\"red\" size=\"4\">В поле ввода можно вводить только цифры!</font><br>";
echo "Запрос не был отправлен!<br>Пожалуйста введите номер лицевого счёта и отправьте запрос снова.</p></div>";
}
}
?>
Знаю он не совершенен и требует доработки...
Так вот этот скрипт висел на старом php сайте, теперь я этот сайт переношу на umi-cms и так как в tpl-шаблонизаторе php скрипты не обрабатываются, нужно сделать кастомный макрос. И я сделал так:
в вайле classes/modules/custom.php
public function balance() {
if (getRequest('submit')) {
if (preg_match('/^\d{1,8}+$/',getRequest('lic')))
{
unset ($lines);
$lines=file("http://www.mysait.ru/cgi-bin/Script.cgi?ACCOUNT=" . htmlspecialchars(getRequest('lic')));
if ($lines[0]==1) {
echo "<br><br><br><br><div align=\'center\'>" . $lines[1] . "</div><br>";
} else {
/* echo "<br><br><br><br>"; */
$lines[1]=preg_replace('/\n/','',$lines[1]);
echo "<div id=\"bal\"><p class=\"ballance_result\">Состояние лицевого счета "."<b>" . htmlspecialchars(getRequest('lic')) . "</b>". " на " . preg_replace("/\n/","",$lines[2] . "<br>");
echo "составляет: ";
echo preg_match('/^-/',$lines[1])?"<b><font color=\"red\">".$lines[1]."</font></b>":$lines[1];
echo " руб.</p></div>";
}
} else {
echo "<div id=\"bal\"><p class=\"ballance_fail\"><font color=\"red\" size=\"4\">В поле ввода можно вводить только цифры!</font><br>";
echo "Запрос не был отправлен!<br>Пожалуйста введите номер лицевого счёта и отправьте запрос снова.</p></div>";
}
}
}
и в шаблоне вывожу - custom balance()
В итоге скрипт работает, но теперь баланс приходит по вверх всего DOM-обекта,так:
<div id="bal">
<p class="ballance_result">Состояние лицевого счета <b>10010010</b> на 12.06.2013
<br>составляет: 45.57 руб.</p>
</div>
<!DOCTYPE html>
<html lang="ru">
<head>
Хотя по сути должен выводится там куда я вставил макрос, под кнопкой submit.
Пожалуйста помогите решить этот вопрос!?