Переносы строк в сниппете
Вопрос к знатокам: подскажите, пожалуйста. Есть вот такой самописный сниппет:
<?php
$info = explode(";", $_GET[info]);
$bid=$info[0];
$summ=$info[1];
$message=$info[2];
$akcept=$info[3];
$avans=$info[4];
$pr=$info[5];
$ou=$info[6];
$bg44=$info[7];
$bg223=$info[8];
$com=$info[9];
$no=$info[10];
$time=$info[11];
$result='Банк: '.$bank.'\r\n '.
'Сумма гарантии: '.$summ.'\r\n '.
'Срок: '.$time.'\r\n '.
'Комиссия: '.$rate.'\r\n '.
'Р/c: '.$message.'\r\n '.
'Безакцептное списание: '.$akcept.'\r\n '.
'Аванс: '.$avans.'\r\n\r\n '.
'Обеспечение: '.$pr.'\r\n '.
'Особые условия: '.$ou.'\r\n '.
'44-ФЗ: '.$bg44.'\r\n '.
'2232-ФЗ: '.$bg223.'\r\n '.
'Коммерческие: '.$com.'\r\n '.
'Фонд капремонта: '.$no;
return $result;
В итоге в письме приходить вот такая строка:Банк: \r\n Сумма гарантии: 0.05\r\n Срок: да\r\n Комиссия: \r\n Р/c: Банк Солидарность (экспресс)\r\n Безакцептное списание: с открытием\r\n Аванс: да\r\n\r\n Обеспечение: нет\r\n Особые условия: поручительство\r\n 44-ФЗ: Рассрочка платежа, премия до 12 мес. \r\n 2232-ФЗ: да\r\n Коммерческие: да\r\n Фонд капремонта: да
Как написать чтобы были переносы строк? Комментарии: 16
return str_replace('\r\n',"\r\n",$result);
Спасибо! Теперь приходит так:
Банк: ' 'Сумма гарантии: 0.0518 Срок: нет Комиссия: Р/c: ОК банк Безакцептное списание: без открытия Аванс: да, без К Обеспечение: да, К=1,25 Особые условия: без обеспечения 44-ФЗ: Особые условия по шаблону заказчика 2232-ФЗ: да Коммерческие: да Фонд капремонта: нет
А как сделать чтобы вот такой вид получился:Банк: ' 'Сумма гарантии: 0.0518
Срок: нет
Комиссия: Р/c
.......
Если вы отправляете письмо своей функцией, укажите Content-type: text/plain.
По поводу переносов строк (php.net): «В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.»
По поводу переносов строк (php.net): «В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.»
Письмо отправляется сниппетом AjaxForm.
Куда возвращает сниппет свой результат? В textarea?
В input:
<input type="hidden" id="info" name="info" value="[[!getInfo?]]" placeholder="" />
Замените эту строчку на:
— в инпутах отсутствует возможность переноса строки.
<textarea id="info" name="info" style="display: none;">
[[!getInfo]]
</textarea>
— в инпутах отсутствует возможность переноса строки.
Сделала, на самой странице если не скрывать textarea, то показывает с переносами:
а в письме все равно приходит строчкой…
а в письме все равно приходит строчкой…
Мм… у вас, случайно, не прописан параметр stripTags для Info?
Приложите, пожалуйста, код вызова AjaxForm.
Приложите, пожалуйста, код вызова AjaxForm.
Для info не писала ничего такого (только оставила вашу поправку return str_replace('\r\n',"\r\n",$result);). Код сниппета в посте приведен полностью.
Вот вызов:
Вот вызов:
[[!AjaxForm?
&snippet=`FormIt`
&emailTpl=`email_tpl`
&form=`mytpl.AjaxForm`
&hooks=`email`
&emailSubject=`Заявка с сайта на получение банковской гарантии`
&emailTo=`web@fksrf.pro`
&validate=`name:required,email:required`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Сообщение успешно отправлено`
]]
Чанк mytpl.AjaxForm:<form action="" method="post" class="ajax_form af_example form-horizontal">
<div class="control-group">
<label class="control-label" for="af_name">[[%af_label_name]]</label>
<div class="controls">
<textarea id="info" name="info" style="display:block">[[!getInfo?]]</textarea>
<input type="text" id="af_name" name="name" value="[[+fi.name]]" placeholder="" class="span4" />
<span class="error_name">[[+fi.error.name]]</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="af_email">[[%af_label_email]]</label>
<div class="controls">
<input type="email" id="af_email" name="email" value="[[+fi.email]]" placeholder="" class="span4" />
<span class="error_email">[[+fi.error.email]]</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="af_message">[[%af_label_message]]</label>
<div class="controls">
<textarea id="af_message" name="message" class="span4" rows="5">[[+fi.message]]</textarea>
<span class="error_message">[[+fi.error.message]]</span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn btn-primary">[[%af_submit]]</button>
</div>
</div>
[[+fi.success:is=`1`:then=`
<div class="alert alert-success">[[+fi.successMessage]]</div>
`]]
[[+fi.validation_error:is=`1`:then=`
<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
`]]
</form>
Чтобы переносы сохранялись и в письме, можно использовать тег pre.
Просто оберни в него текст с переносами — и он так и отобразится.
Просто оберни в него текст с переносами — и он так и отобразится.
А где именно? В сниппете где формируется нужный текст теги не работают.
В шаблоне с письмом, где нужно соблюдать форматирование, или даже в самом сниппете:
return '<pre>'.str_replace('\r\n',"\r\n",$result).'</pre>';
В самом сниппете не срабатывает. А в шаблоне с письмом не получится, потому что все данные заносятся в один параметр, т.е. на выходе есть плейсхолдер info и в нем вся информация сразу.
<p>Дополнительные данные: [[+info]]</p>
Прям нереальная проблема, понятно.
<p>Дополнительные данные:
<pre>[[+info]]</pre>
</p>
уже догадалась… спасибо
(не вернулась еще в рабочий ритм)
(не вернулась еще в рабочий ритм)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.