Переносы строк в сниппете

Вопрос к знатокам: подскажите, пожалуйста. Есть вот такой самописный сниппет:
<?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 Фонд капремонта: да
Как написать чтобы были переносы строк?
Любовь
07 октября 2015, 10:03
modx.pro
1
2 216
0

Комментарии: 16

Максим Кузнецов
07 октября 2015, 13:10
+1
return str_replace('\r\n',"\r\n",$result);
    Любовь
    07 октября 2015, 13:13
    0
    Спасибо! Теперь приходит так:
    Банк: ' 'Сумма гарантии: 0.0518 Срок: нет Комиссия: Р/c: ОК банк Безакцептное списание: без открытия Аванс: да, без К Обеспечение: да, К=1,25 Особые условия: без обеспечения 44-ФЗ: Особые условия по шаблону заказчика 2232-ФЗ: да Коммерческие: да Фонд капремонта: нет
    А как сделать чтобы вот такой вид получился:
    Банк: ' 'Сумма гарантии: 0.0518
    Срок: нет 
    Комиссия: Р/c
    .......
      Максим Кузнецов
      07 октября 2015, 13:15
      +1
      Если вы отправляете письмо своей функцией, укажите Content-type: text/plain.

      По поводу переносов строк (php.net): «В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.»
        Любовь
        07 октября 2015, 13:18
        0
        Письмо отправляется сниппетом AjaxForm.
          Максим Кузнецов
          07 октября 2015, 13:26
          +1
          Куда возвращает сниппет свой результат? В textarea?
            Любовь
            07 октября 2015, 13:43
            0
            В input:
            <input type="hidden" id="info" name="info" value="[[!getInfo?]]" placeholder="" />
              Максим Кузнецов
              07 октября 2015, 13:46
              +1
              Замените эту строчку на:

              <textarea id="info" name="info" style="display: none;">
              [[!getInfo]]
              </textarea>

              — в инпутах отсутствует возможность переноса строки.
                Любовь
                07 октября 2015, 13:57
                0
                Сделала, на самой странице если не скрывать textarea, то показывает с переносами:
                а в письме все равно приходит строчкой…
                  Максим Кузнецов
                  07 октября 2015, 14:12
                  0
                  Мм… у вас, случайно, не прописан параметр stripTags для Info?

                  Приложите, пожалуйста, код вызова AjaxForm.
                    Любовь
                    07 октября 2015, 14:15
                    0
                    Для 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>
        Василий Наумкин
        07 октября 2015, 14:28
        0
        Чтобы переносы сохранялись и в письме, можно использовать тег pre.

        Просто оберни в него текст с переносами — и он так и отобразится.
          Любовь
          07 октября 2015, 14:30
          +1
          А где именно? В сниппете где формируется нужный текст теги не работают.
            Василий Наумкин
            07 октября 2015, 14:36
            0
            В шаблоне с письмом, где нужно соблюдать форматирование, или даже в самом сниппете:
            return '<pre>'.str_replace('\r\n',"\r\n",$result).'</pre>';
              Любовь
              07 октября 2015, 14:40
              0
              В самом сниппете не срабатывает. А в шаблоне с письмом не получится, потому что все данные заносятся в один параметр, т.е. на выходе есть плейсхолдер info и в нем вся информация сразу.
              <p>Дополнительные данные: [[+info]]</p>
                Василий Наумкин
                07 октября 2015, 14:41
                0
                Прям нереальная проблема, понятно.
                <p>Дополнительные данные:
                <pre>[[+info]]</pre>
                </p>
                  Любовь
                  07 октября 2015, 14:46
                  0
                  уже догадалась… спасибо
                  (не вернулась еще в рабочий ритм)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      16