AndyB 0 Опубликовано 9 июня, 2013 Жалоба Share Опубликовано 9 июня, 2013 Если не указывать email получателя при заказе, то получаем сообщение: Language string failed to load: invalid_address: Пожалуйста введите минимум один Emailполучателя.Warning: Cannot modify header information - headers already sent by (output started at /home/safiaru/domains/XXXXXXXX/public_html/includes/external/phpmailer/class.phpmailer.php:464) in /home/safiaru/domains/XXXXXXXX/public_html/inc/vam_redirect.inc.php on line 47 Почему “Language string failed to load”? Если email – обязательное поле, то как вывести сообщение об этом в таком виде, как у сообщения о невыбранном способе доставки - в красивой красной рамке и с возможностью доввода данных? И можно ли сделать это поле необязательным? Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 9 июня, 2013 Жалоба Share Опубликовано 9 июня, 2013 Проверьте в файле send_order.php в строке примерно 95 должен быть код: // send mail to customer if (isset($order->customer['email_address'])) { vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $order->customer['email_address'], $order->customer['firstname'].' '.$order->customer['lastname'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', $order_subject, $html_mail, $txt_mail); } Это не отсылает письмо заказчику, если он не указал емайл Ссылка на сообщение Поделиться на другие сайты
AndyB 0 Опубликовано 9 июня, 2013 Автор Жалоба Share Опубликовано 9 июня, 2013 if (isset($order->customer['email_address'])) ... Насколько я понимаю незнакомый (похоже, что пока незнакомый) мне php, это проверка на существование свойства email_address заказчика customer заказа $order. А надо бы еще проверять email_address на непустоту. Я добавил отладочное сообщение echo 'send mail to customer:(',$order->customer['email_address'],')','<br>'; внутри тела условия. При пустом e-mail получил текст: send mail to customer:() Т.о. я могу сделать вывод, что почта заказчику пытается отправляться, хоть адрес его и не указан ;-((( Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 10 июня, 2013 Жалоба Share Опубликовано 10 июня, 2013 AndyB Скачайте архив с VamShop и возьмите оттуда файл /send_order.php Как выше писал [:|||||||:], там добавлено условие - не отправлять почту, если не указан email. Ссылка на сообщение Поделиться на другие сайты
AndyB 0 Опубликовано 10 июня, 2013 Автор Жалоба Share Опубликовано 10 июня, 2013 У меня в send_order.php есть эти строки! Но условие (isset($order->customer['email_address'])) выполняется даже при пустом email получателя ;-(( Для проверки я добавил вывод всех переменных из $order уже после (!) срабатывания условия. И вижу, что в пусто: ["email_address"]=> string(0) "" // send mail to customer if (isset($order->customer['email_address'])) { echo var_dump($order); vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $order->customer['email_address'], $order->customer['firstname'].' '.$order->customer['lastname'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', $order_subject, $html_mail, $txt_mail); } Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 10 июня, 2013 Жалоба Share Опубликовано 10 июня, 2013 Попробуйте заменить: if (isset($order->customer['email_address'])) { Например на: if ($order->customer['email_address'] != '') { Ссылка на сообщение Поделиться на другие сайты
AndyB 0 Опубликовано 11 июня, 2013 Автор Жалоба Share Опубликовано 11 июня, 2013 спасибо, все отработало корректно! Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 11 июня, 2013 Жалоба Share Опубликовано 11 июня, 2013 Не за что Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения