Суть задачи:
Есть тривиальная html-форма с набором input'ов, для которой написан php-обработчик "send.php". В нем происходит получение, введенных посетителем данных (из под суперглобального массива $_POST), некоторое их преобразование и последующая отправка на email, посредством функции mail();
Вместе с отправкой данных из полей формы, необходимо "забирать" данные из текущего состояния товарной корзины, а именно два параметра: Название товарной/товарных позиции и их соответствующее количество. Сама корзина, как я понимаю, и, как мне вчера прояснило этот момент хабр-сообщество - организована с помощью Smarty. Сам файл с расширением ".tpl". (Впрочем, весь сайт организован этим шаблонизатором)
Фрагмент кода корзины:
<td class="cart_description" data-title="{l s='Description'}">
{capture name=sep} : {/capture}
{capture}{l s=' : '}{/capture}
<p class="product-name"><a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute, false, false, true)|escape:'html':'UTF-8'}">{$product.name|escape:'html':'UTF-8'}</a></p>
{if $product.reference}
<small class="cart_ref">
{l s='SKU'}{$smarty.capture.default}{$product.reference|escape:'html':'UTF-8'}
</small>
{/if}
{if isset($product.attributes) && $product.attributes}
<small>
<a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute, false, false, true)|escape:'html':'UTF-8'}">
{$product.attributes|@replace: $smarty.capture.sep:$smarty.capture.default|escape:'html':'UTF-8'}
</a>
</small>
{/if}
</td>
Код обработчика:
<?php
// обработчик формы оформления заказа наложенным платежом
session_start();
// получение данных
$payment_number = $_POST['payment_number'];
$fio = $_POST['fio'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$address = $_POST['address'];
$message = $_POST['message'];
$position = $product['name'];
// обработка полученных данных
$payment_number = htmlspecialchars($payment_number);
$fio = htmlspecialchars($fio);
$tel = htmlspecialchars($tel);
$email = htmlspecialchars($email);
$address = htmlspecialchars($address);
$message = htmlspecialchars($message);
$payment_number = trim($payment_number);
$fio = trim($fio);
$tel = trim($tel);
$email = trim($email);
$address = trim($address);
$message = trim($message);
$payment_number = urldecode($payment_number);
$fio = urldecode($fio);
$tel = urldecode($tel);
$email = urldecode($email);
$address = urldecode($address);
$message = urldecode($message);
// отправка письма
if (mail("whtnet@mail.ru",
"ВсеЛуковицы : \"Заказ наложенным платежом\"",
"Номер заказа: ".$payment_number."\n".
"ФИО: ".$fio."\n".
"Телефон: ".$tel."\n".
"email: ".$email."\n".
"Адрес доставки: ".$address."\n".
"Товарные позиции: ".$position."\n".
"Комментарий к заказу: ".$message,
"From: no-reply@mydomain.ru \r\n")) {
$_SESSION['message_complete'] = 'Благодарим за заявку, оператор перезвонит Вам в ближайшее время.';
// релокация
header("Location: /index.php");
}
else {
$_SESSION['message_error'] = 'Error! Проверьте данные или попробуйте снова!';
// релокация
header("Location: /index.php");
}
Суть проблемы:
Моя "боль", заключается в том, что я не могу понять, каким образом получить данные с двух конкретных переменных, точнее ассоциативных массивов (если не ошибаюсь). Знаю, что одно из двух целевых данных, находится в $product.name, но как мне получать его содержимое, а главное использовать в php-обработчике (send.php), для отправки на email, в совокупности с теми данными, полученными из полей формы. Пробовал включать php-код в теги вида: {php}code php{/php}, но даже простановка этих тегов, как таковых, без содержимого в них кода, провоцирует 500-ый ответ сервера (500 error).