Всем привет.
Возможно глупый вопрос, но тем не менее.
Создаю форму отправки сообщения с сайта. Поля - имя, емэил, сообщение. При заполнение поля сообщение можно написать текст с разбитием его на строки. Например:
"Привет!
Пишу вам сообщение"
но на почту приходит это все в виде: "Привет! Пишу вам сообщение". Т.е. не происходит разбития на строки.
Пробовал устанавливать параметр allowhtml в значение 1 - не помогает. Другоих похожих параметров не увидел.
Прошу помощи, наверняка все просто - но понять где косячу не могу.
Так же возникает вопрос про добавления класса для неправильно заполненых полей. т.е. если у меня не ввели имя, вылезает сообщение перед формой. а также я хочу, что бы вокруг поля рисовалась рамочка определенного цвета заданной ширины.
Что делаю. создаю в css файле класс такой:
.bord {border-color:#FF0000;
border-style:solid;
border:1px;}
в eform пишу параметр &invalidClass=`bord`
и ничего пне роисходит. при попвтке отправить сообщение с пустыми полями (которые отмечены как обязательные) вылезает только сообщение. класс мой не добавляется вообще. я так понимаю это связано с тем, что поле уже имеет класс required.
Вопрос тогда еще такой - как такую фичу реализовать? где же я косячу?
заранее всем спасибо!
Так много слов, а нужного, то есть описания вызова сниппета, нет.
В вызове параметр &report должен указывать на чанк с шаблоном письма. Если там нет разбиения на строки, то все и будет выводиться в одной строке.
&invalidClass описывает класс, добавляемый при неверном вводе параметра (по умолчанию invalid), а &requiredClass – класс при отсутствующем параметре. То есть, если вместо bord выводится required, то в поле нет ошибки – оно просто пустое.
Кстати, это описание в принципе неверно:
.bord {border-color:#FF0000;
border-style:solid;
border:1px;}
Нужно или так:
.bord {border-color:#FF0000;
border-style:solid;
border-width:1px;}
или так:
.bord {border: 1px solid #FF0000;}
Документацию читайте! Тем более что она прямо вместе со сниппетом поставляется.
Там написано:
html - Same as string except that it converts line endings (\n) to
tags
То есть нужно исправить
eform="Сообщение:string:1"
на
eform="Сообщение:html:1"
AKots, большое Вам спасибо!
блин, поспешил.
eform="Сообщение:html:1" - не помогает такое решение. да, теги стали работать. но мне нужно что бы при нажатии на ентер в поле сообщение переводилось на новую строку, а в письме, которое приходило было так же как и в форме...
блин, я написал, сам не очень понял) в первом посте вроде более понятно)
Quote from: gregst at Feb 20, 2008, 11:25 AM
блин, я написал, сам не очень понял
Я тем более не понял. Если теги работают, то тег
переводит строку.
Если строка в почтовой программе не переводится, нужно смотреть код HTML пришедшего письма и при необходимости корректировать соответствующий чанк.
попробую пояснить что мне нужно:
1) в форму в текстареа вводится текст. в несколько строчек. перевод на новую строку осуществляется нажатием ентера. теги человек не использует.
2) на почту приходит письмо, в котором текст из текстареа выводится в одну строку.
чанк шаблона письма я привел. в нем используется плейсхолдер [+nite+]./
те. вводится что-то нибудь типа:
"1 строка
2 строка
3 строка"
а в письме приходит:
"1 строка 2 строка 3 строка" - в одну строчку.
вот что я имел ввиду
Повторю - нужно смотреть код HTML пришедшего письма. У меня eform работает именно так, как описано – после смены string на html в письме появляются теги
и в почтовой программе введенный текст располагается на нескольких строках. Кстати, может страницы остались старые в кэше?
А теги человеку и не надо использовать – при нажатии клавиши Enter в текст вставляется символ \n, который eform меняет на
.
Не знаю, тут помочь ничем не могу. У меня в чанке формы стоит:
<textarea name="message" rows="5" cols= "40" id="cfMessage" eform="Сообщение:html:1"></textarea>
а в чанке отчета:
<p>Текст:<br />[+message+]</p>
В итоге в пришедшем письме получается:
<p>Текст:<br />сообщение
<br />в несколько
<br />строк</p>
То есть все правильно работает.
Если так не работает, нужно в файле
eform.inc.php найти строку:
if(!$sendAsText ) $value = preg_replace('#(\n<br[ /]*?>|<br[ /]*?>\n|\n)#i','<br />',$value);
и разобраться, почему она не работает.