Александр 0 Опубликовано 13 мая, 2012 Жалоба Share Опубликовано 13 мая, 2012 (изменено) Подскажите, кто знает. Хочу заставить маг брать шаблон письма в зависимости от ид статуса. Например: template/admin/mail/russian/change_order_mail_1.txt template/admin/mail/russian/change_order_mail_2.txt template/admin/mail/russian/change_order_mail_3.txt ... /admin/orders.php: while ($orders_status = vam_db_fetch_array($orders_status_query)) { $orders_statuses[] = array ('id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name']); $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name']; } [/CODE] меняю на : [CODE] while ($orders_status = vam_db_fetch_array($orders_status_query)) { $orders_statuses[] = array ('id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name']); $orders_status['orders_status_id'] = $orders_status_id; $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name']; } вместо: $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail.txt'); [/code] это: [CODE] $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$orders_status_id.'txt'); ------------ в общем как указать переменную со ID нового статуса? ----------------- чтобы дальше не читать скажу ответ сразу: добавляем в orders.php в строку 115 код $newstatusid=$_POST['new_status']; меняем 116 и 117 строки на $html_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$newstatusid.'.html'); $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$newstatusid.'.txt'); Изменено 20 мая, 2012 пользователем Александр Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 мая, 2012 Жалоба Share Опубликовано 13 мая, 2012 Так у Вас не определена переменная $orders_status_id, видимо. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 13 мая, 2012 Автор Жалоба Share Опубликовано 13 мая, 2012 То есть так: while ($orders_status = vam_db_fetch_array($orders_status_query)) { $orders_statuses[] = array ('id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name']); $orders_status_id = $orders_status['orders_status_id']; $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name']; } $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$orders_status_id.'txt'); Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 13 мая, 2012 Автор Жалоба Share Опубликовано 13 мая, 2012 Но это не о том. Она правда не определена и так. $orders_status_id = $orders_status['orders_status_id']; - не имеет смысла. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 мая, 2012 Жалоба Share Опубликовано 13 мая, 2012 Ну смотрите, чему у Вас она вообще равна, эта переменная. Для пробы вообще поставьте число 1 например, да посмотрите, работает вообще Ваш подход или нет. А уже затем смотрите, что не так с переменной. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 13 мая, 2012 Автор Жалоба Share Опубликовано 13 мая, 2012 $vamTemplate->assign('ORDER_STATUS', $orders_status_array[$status]); - это как я понимаю, текущий статус. А как взять пост...? echo $_POST['status']; ничего не даёт. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 мая, 2012 Жалоба Share Опубликовано 13 мая, 2012 post должен работать, может просто не тот код правите?! Там же в файле код и для списка заказов и для конкретного заказа. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 13 мая, 2012 Автор Жалоба Share Опубликовано 13 мая, 2012 Вообще солнце в глаза - в голове пусто. Пойду вело-кружок дам. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 13 мая, 2012 Автор Жалоба Share Опубликовано 13 мая, 2012 <?php if (!$status){echo 'no $status';} if (!$_POST['new_status']){echo 'no new_status';} if (!$_POST['status']){echo 'no status';} ?> В любом месте orders.php дают no. Но они же как-то данные передают в базу? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 мая, 2012 Жалоба Share Опубликовано 14 мая, 2012 Так и должно быть, Вы ж не отправили форму, $_POST - это данные формы после submit'a. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Я как раз отправил. Форма переправляет запрос на себя же. Меняю статус заказа, галочка отправить письмо клиенту и кнопка обновить перегружают текущую страницу со словами "Заказ номер 236 обновлён!" По идее $_POST должен вывести данные формы при перезагрузки страницы... Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 мая, 2012 Жалоба Share Опубликовано 14 мая, 2012 Значит наверное свой код не туда вставляет, обычно там же сразу идёт редирект на страницу, вот после редиректа понятно, что все POST данные сбрасываются. Совет в-общем один, весь код уже ведь есть для примера, просто смотрите уже существующий код, как сделан. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Такие вот изыскания: echo '<tr class="dataTableContent"><td colspan="7">' . BUS_HEADING_TITLE . ': ' . vam_draw_pull_down_menu('new_status', array_merge(array(array('id' => '', 'text' => BUS_TEXT_NEW_STATUS)), $orders_statuses), '', '') [/CODE] если я правильно понял должно передать постом [b]$_POST['new_status'][/b] SwitchCheck - это кнопка лезет в categories.js : [CODE] //for checking if at least one element is checked function CheckMultiForm () { var ml = document.multi_action_form; var len = ml.elements.length; for (var i = 0; i < len; i++) { var e = ml.elements[i]; if (e.name == "multi_products[]" || e.name == "multi_categories[]" || e.name == "multi_orders[]" || e.name == "multi_customers[]") { if (e.checked == true) { return true; } } } alert('абаДаЕаЛаИбаЕ б аОбб аБб аОаДаИаН баЛаЕаМаЕаНб!\nPlease check at least one element!'); return false; } что проверяет данные в форме и постом передаёт в наш orders.php: <form name="multi_action_form" action="http://vaude.localhost/admin/orders.php" method="post"> [/code] оно же : [CODE] echo vam_draw_form('multi_action_form', FILENAME_ORDERS,vam_get_all_get_params()); Итак, $_POST['new_status'] - это наша переменная с id статуса при редакировании формы и возврате в orders.php. Верно ли я рассуждаю? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 мая, 2012 Жалоба Share Опубликовано 14 мая, 2012 Ну, судя по коду приведённому, да. Вы ж посмотрите, в письмо вставляется ведь новый статус заказа, посмотрите как эта метка для статуса определяется. Наверняка ведь уже есть готовый код и писать свой даже не надо. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Готовый, это строка, где определяется vam_draw_pull_down_menu('new_status', array_merge(array(array('id' => '', 'text' => BUS_TEXT_NEW_STATUS)), $orders_statuses) [/CODE] [b]new_status[/b], то есть для формы [b]- $_POST['new_status'][/b]. А он эхом : [b]echo $_POST['new_status']; [/b] ничего не пишет. Ну или так: [b]echo $_POST['new_status'].'111';[/b] пишет только [b]111[/b]. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 А можно как-то передать весь пост? Например, echo $_POST; ? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 мая, 2012 Жалоба Share Опубликовано 14 мая, 2012 Да не будет он post писать, там же редирект сразу идёт, если я правильно помню. Вы ж смотрите как определяется шаблон письма, что в него вставляется и как. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Это где-то наверху. if (isset($_POST['submit']) && isset($_POST['multi_orders'])){ if (($_POST['submit'] == BUTTON_SUBMIT)&&(isset($_POST['new_status']))&&(!isset($_POST['delete_orders']))){ // Fair enough, let's update ;) $status = vam_db_prepare_input($_POST['new_status']); [/CODE] До этих строк присвоил [b]$new_status = $_POST['new_status'];[/b] Но эхо по [b]$new_status, [/b]тоже пустое. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Я сейчас не шаблон письма рассматриваю. С ним всё просто: $html_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail.html'); $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail.txt'); [/CODE] Выдумывать ничего не надо: [CODE] $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$new_status.'.txt'); И имеем change_order_mail_1.txt, change_order_mail_2.txt итд. Для этого надо определить ID нового статуса. Он передаётся постом - $_POST['new_status']; Если присвоить его значение в начале документа новой переменной, то её можно подставить в качестве $new_status. Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 Просто что я вижу: форма <form name="multi_action_form" action="http://site.localhost/admin/orders.php" method="post"> ... <tr class="dataTableContent"><td colspan="7">Смена статуса: <select name="new_status"><option value="" SELECTED>Выберите новый статус... [/CODE] Которая по name передаёт в orders.php [b]$_POST['new_status'];[/b] И который далее в форме обрабатывается. Но даже в до обработки переменной $_POST['new_status'] в документе orders.php [b]echo $_POST['new_status']; ничего не выводит ([/b]при редактировании поля формы [b]<select name="new_status">[/b]) Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 14 мая, 2012 Автор Жалоба Share Опубликовано 14 мая, 2012 добавляем в orders.php в строку 115 код $newstatusid=$_POST['new_status']; меняем 116 и 117 строки на $html_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$newstatusid.'.html'); $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/change_order_mail_'.$newstatusid.'.txt');[/CODE] [i][b][sub]orders.php - перезалил на нормальный, проверено, везде работает.[/sub][/b][/i]orders.php Ссылка на сообщение Поделиться на другие сайты
Александр 0 Опубликовано 28 сентября, 2012 Автор Жалоба Share Опубликовано 28 сентября, 2012 в 321 и 322,323 строке $newstatusid=$_POST['status']; [/CODE] короче, у кого пустое письмо приходило, если не массово отсылать статусы, а через кнопку редактировать, поштучно. 115 строка в посте - [b]new_status[/b]orders.php Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения