UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Babajka от 12 Декабря 2012, 12:49:47

Название: Форма обратной связи в версии Start
Отправлено: Babajka от 12 Декабря 2012, 12:49:47
Сделал форму обратной связи, как в данной статье, предложенный Надеждой.
http://umi-cms.spb.su/forum/index.php?what=showtopic&theme=8
Но ничего не выходит, не отправляется. Это ясно что из-за того что она в tpl делает, а я пытаюсь в xslt.
Но как именно можно реализовать это в xslt?
Название: Re:Форма обратной связи в версии Start
Отправлено: Babajka от 14 Декабря 2012, 11:47:02
Нашел более, как мне кажется, легкий способ. http://prostoufa.ru/forma-obratnoj-svyazi-na-umi-start/#comment-322 (http://prostoufa.ru/forma-obratnoj-svyazi-na-umi-start/#comment-322)
Содержание темы:
Так как в редакции start системы управления umicms нет модуля обратная связь, то пришлось написать свой обработчик форм. Правда он без конструктора форм, но для простой обратной связи на сайте вполне сгодиться.

Вот код обработчика формы, который я по привычке помещаю в кастомный файл модуля users: /classes/modules/users/__custom.php. Так же не забываем добавить функцию в файл permissions.php, лежащий поблизости в той же папке. Я добавил функцию в ветку «login».

public function send_form()
{
//список полей формы
$item1 = (string) getRequest('item1');
$item2 = (string) getRequest('item2');
$item3 = (string) getRequest('item3');
$item4 = (string) getRequest('item4');
$item5 = (string) getRequest('item5');
$item6 = (string) getRequest('item6');
$item7 = (string) getRequest('item7');
$item8 = (string) getRequest('item8');
 
//массив обязательный полей и сообщений о пустом значении соответствующих полей
$test = array(
'Заполните поле 2' => $item2,
'Заполните поле 2' => $item3
);
$error = false;
foreach ($test as $name_field => $value) {
if (empty($value)) {
$this->errorNewMessage('Необходимо заполнить все поля',false);
 
$error = true;
}
} //проверка заполненности обязательных полей
if ($error) {
$this->errorPanic(); //вывод ошибки
}
 
//формирование тела письма
$mailContent = 'Поле 1: '.$item1.'<br>';
$mailContent .= 'Поле 2: '.$item2.'<br>';
$mailContent .= 'Поле 3: '.$item3.'<br>';
$mailContent .= 'Поле 4: '.$item4.'<br>';
$mailContent .= 'Поле 5: '.$item5.'<br>';
$mailContent .= 'Поле 6: '.$item6.'<br>';
$mailContent .= 'Поле 7: '.$item7.'<br>';
$mailContent .= 'Поле 8: '.$item8.'<br>';
 
$mail = new umiMail;
$email_from = regedit::getInstance()->getVal("//settings/email_from"); //берём адрес электронной почты и имя адресата из вкладки «почта» модуля «конфигурация».
$mail->addRecipient($email_from);
$mail->setFrom($item2, $item1); //$item2 - email отправителя, $item1 - имя
$mail->setSubject('Пользователь заполнил форму на сайте "garto.ru"');
$mail->setPriorityLevel('highest');
$mail->setContent($mailContent);
$mail->commit();
$mail->send();
 
$this->redirect('/order/?result=success');//редирект при удаче
 
}

Вывод формы такой:

<form action="/users/send_form/" method="post" >
<label>Фамилия, имя, отчество:</label><br/>
<input type="text" name="item1" value=""/>

<label>E-mail или телефон для связи:</label><br/>
<input type="text" name="item2" value=""/>

<label>Текст сообщения:</label><br/>
<textarea name="item3" ></textarea>
<br/>
<input type="submit" name="item4" class="buttom" value="Отправить"/>
</form>

Перезагрузка страницы происходит, но отправка сообщения не идет. В чем может быть проблема?
Название: Re:Форма обратной связи в версии Start
Отправлено: PHOENIX-75 от 15 Января 2013, 15:04:33
Как вариант для начала нужно проверить а заполнено ли поле "E-mail отправителя" в Модули->Конфигурация->Вкладка Почта судя по email_from.
Просто я когда тоже писал кастом для отправки почты для стартовой версии сталкивался с такой же ошибкой, вроде как сообщение об отправки проходит, а письма по факту нет.