Перейти к содержимому


Произвольный SQL-запрос из Smarty-шаблона


Сообщений в теме: 3

#1 nevmerzhitsky

    Участник

  • Пользователи
  • PipPip
  • 24 сообщений
  • Пол:Мужчина

Отправлено 03 Сентябрь 2014 - 01:14

Подскажите, как решить задачу?
Есть таблицы Кредитные договоры и Клиенты, у клиента может быть множество договоров. Есть шаблон для печати в Кредитных договорах, в котором нужно вывести в виде таблицы все договоры клиента, но редактор шаблона не предоставляет такой возможности.
Пытался сделать выборку нужных данных из таблиц через {php} в смарти прямо в теле шаблона (по примеру из http://www.smarty.ne...unction.php.tpl), но на это получил эксепшен "{php} is deprecated, set allow_php_tag = true to enable". Включить эту опцию для шаблона ваша система не позволяет. $php_handling у вас также не SMARTY_PHP_ALLOW. Зачем заблокирована вставка PHP-кода в шаблон, я понять не могу, если вы не даете возможность подготовить PHP-переменные перед выводом шаблона ... Попытка вызвать php-функцию из шаблона также провалилась. Пробую сделать выборку прямо в foreach:
{foreach from={data_table('Кредитные договоры', "`status`=0", 'all')} item=item key=key}</p>
[key={$key}]
[item={$item}]
[id1={$item.id}]
[id2={$item.ID}]
[Номер кредитного договора={$item['Номер кредитного договора']}]
{/foreach}

Но отображается в итоге странный текст "[key=0] [item=Array] [id1=A] [id2=A] [Номер кредитного договора=A]" (лишь одна итерация). Хотя результат выполнения данной функции на чистом PHP содержит 988 элементов:
array(988) {
[0]=>
array(47) {
["ID"]=>
string(1) "6"
["Кто добавил"]=>
string(3) "101"
["Время добавления"]=>
string(19) "2014-05-08 22:59:00"
["Статус записи"]=>
string(1) "0"
["Номер кредитного договора"]=>
string(16) "213123-АВ-2313"
}
...
}

И как в таком положении дел мне решить поставленную задачу?

#2 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 03 Сентябрь 2014 - 01:27

Вы смотрите smarty документацию версии 2. В кб используется версия 3 (документация на нее к слову на англ.). Использование тега {php} является устаревшим. И потом зачем такое извращение? У вас скорее всего в договорах есть поле связи на таблицу клиенты. Сделайте таблицу договора - подчиненной и будет вам счастье.

И приучитесь обворачивать код тегами кода(значек <>). Очень помогает воспринимать информацию.

Сообщение отредактировал wondertalik: 03 Сентябрь 2014 - 01:29


#3 nevmerzhitsky

    Участник

  • Пользователи
  • PipPip
  • 24 сообщений
  • Пол:Мужчина

Отправлено 03 Сентябрь 2014 - 11:30

wondertalik, вы неверно поняли задачу, подтаблицей договоры уже являются. перечитайте второй абзац.

Сообщение отредактировал nevmerzhitsky: 03 Сентябрь 2014 - 11:30


#4 nevmerzhitsky

    Участник

  • Пользователи
  • PipPip
  • 24 сообщений
  • Пол:Мужчина

Отправлено 03 Сентябрь 2014 - 13:19

Рабочее решение описано в http://clientbase.ru...indpost&p=25973





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных