|
|
08.03.2023, 17:54
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
В форме обратной связи есть поле problem типа Множественный выбор, checkbox.
Значения берутся из списка Problems.
В админке в режиме редактирования вывожу значения из этого поля так:
<?= nc_array_to_string( $f_problem, $template )?>
Это работает.
Но! не понимаю, как передавать данные из этого массива в теле письма.
Мой вариант (не работающий):
Код:".($f_problem > 0 ? "
Уточните проблему: ".$db->get_var("select Problems_Name from Classificator_Problems where Problems_ID = ".$f_problem."")."
":NULL)."
Зашла в тупик и прошу помощи зала))
Наталья Комарова
|
|
|
09.03.2023, 12:41
|
|
Баранов Александр
NetCat
Зарегистрирован: 2013-04-17
Сообщений: 40
|
Здравствуйте!
К сожалению, по вашим вводным данным не ясно, где именно находятся оба приведенных куска кода(список объектов, полное отображение, префикс , макет дизайна и т.д.), от контекста очень сильно зависит причина того, что может быт не так, например, переменные вида $f_ не будут доступны нигде, кроме списка и полного отображения и т.д. Кроме того, самый лучший совет разработчику при любых сложностях в понимании кода - использовать отладку и логирование, в вашем случае , в первую очередь, можно посоветовать залогировать(вывести на экран, в файл и т.д.) то, что получается в строке-теле вашего письма.
abaranov
|
|
|
09.03.2023, 18:02
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
Александр, добрый день! Спасибо за ответ и простите за тупость, я уже совсем зарапортовалась с этой формой.
Уточню: речь идет о компоненте "Письмо с сайта". Первый кусок кода <?= nc_array_to_string( $f_problem, $template )?>
используется в панели редактирования шаблона (объект в списке). В системных настройках там прописан сам template. Это работает, т.е. в админку передаются все данные из формы.
Второй кусок Код:".($f_problem > 0 ? "
Уточните проблему: ".$db->get_var("select Problems_Name from Classificator_Problems where Problems_ID = ".$f_problem."")."
":NULL)." используется в шаблонах действий (действие после добавления).
Причем таким же образом здесь же прописан вывод данных из другого поля типа Множественный выбор (select). И это работает, в письме данные из этого поля приходят. А вот с чекбоксами, когда надо передать несколько значений из списка, не получается.
Наталья Комарова
|
|
|
09.03.2023, 18:12
|
|
Баранов Александр
NetCat
Зарегистрирован: 2013-04-17
Сообщений: 40
|
К сожалению, не смогу что-либо посоветовать, кроме анализа лога ошибок сервера и проведения пошаговой отладки действий после добавления , обычно в таких случаях разработчику помогает посмотреть "по коду" , что получается в переменной тела письма перед вызовом метода отправки , как вариант, стоит сделать останов до вызова метода отправки письма и вывод переменной его тела на страницу(например, с помощью var_dump и посмотреть, что именно получается в html). Конкретного кода, решающего вашу задачу привести не смогу.
abaranov
|
|
|
18.03.2023, 19:40
|
|
Игорь
Игорь Мишарин
Зарегистрирован: 2011-11-20
Сообщений: 482
|
Дело в том, что выбранные значения хранятся в БД в таком виде - ,1,2,3,
В Вашем случае должен помочь такой вариант:
Код:
$db->get_results("select Problems_Name from Classificator_Problems where Problems_ID IN (". trim($f_problem, ',') ."")
Так Вы получите массив с "Проблемами". А дальше уже или "вручную" его разобрать или используя nc_array_to_string()
Stark
|
|
|
23.05.2023, 14:22
|
|
Gvenv_nk
Наталья Комарова
Зарегистрирован: 2011-11-07
Сообщений: 43
|
Игорь, добрый день! Спасибо большое, буду пробовать.
Наталья Комарова
|