HunteR-VRX
@HunteR-VRX
Помешанный на развитии

Как использовать значение переменной/массива для отправки на почту из-под шаблонизатора Smarty?

Суть задачи:
Есть тривиальная 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).
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
micro-CMS
@micro-CMS
автор книги по продажам, создатель собственной CMS
Решили вопрос? Может подскажите как переменную смарти передать внутрь {php}..{/php} чтобы использовать её, а из него опять передать в Смарти?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы