Форма контактов использующая Prototype.js

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
User avatar
Dr.ON
Forum Members
Forum Members
Posts: 14
Joined: Thu Jul 30, 2009 6:13 pm

Форма контактов использующая Prototype.js

Post by Dr.ON »

Встроил в сайт форму контактов, отправляет письмо без перезагрузки страницы.
При отправке появляется ошибка:
string(114) "Smarty error: [in tpl_head:26 line 44]: syntax error: unrecognized tag 'new' (Smarty_Compiler.class.php, line 590)"
Скрипты поместил в /modules/Contact.
Код в шаблоне:

Code: Select all

{* contact form script *}
<__script__ type="text/javascript" src="modules/Contact/prototype.js"></__script>
<__script__ type="text/javascript" src="modules/Contact/protoformclass.js"></__script>
<__script__ type="text/javascript">
Event.observe(window,"load",function() {
     
	new Protoform('test');     
	  
});
</__script>
Форма:

Code: Select all

<div id="box">
	<form action="/modules/Contact/send.php" method="post" id="test">
		<fieldset>
			<div class="contact">
				<label for="name_Req">{tr_key key="name" lang="$lang"}<span class="red"> *</span></label>
				<input type="text" id="name_Req" name="name" title="Required! Please enter your name" />
			</div>
			<div class="contact">
				<label for="contact_Req_Email">{tr_key key="email" lang="$lang"}<span class="red"> *</span></label>
				<input type="text" id="contact_Req_Email" name="email" title="Required! Please enter a valid email address" />
			</div>
			<div class="contact">
			<label for="telephone_Tel">{tr_key key="telephone" lang="$lang"}</label>
				<input type="text" id="telephone_Tel" name="telephone" title="Please enter a valid telephone number" />
			</div>                
			<div class="contact">
				<label for="message_Req">{tr_key key="message" lang="$lang"}<span class="red"> *</span></label>
				<textarea id="message_Req" name="message" rows="5" cols="20" title="Required! Please enter your message"></textarea>
			</div>
			<div class="button">
				<input type="submit" value="Send" />
        	</div>
		</fieldset>
	</form>
</div>
send.php:

Code: Select all

include ("config.php");

$name = $_POST['name'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$message = $_POST['message'];

$message = $name." has sent us an email:\r\nEmail: ".$email."\r\nTelephone: ".$telephone."\r\nMessage:\r\n<----BEGINNING OF MESSAGE!---->".
$message."\r\n<----END OF MESSAGE!---->\r\n\n\n";

$eol = "\r\n";

  $headers .= 'From: '.$name.' <'.$email.'>'.$eol;
  $headers .= 'Reply-To: '.$name.' <'.$email.'>'.$eol;
  $headers .= 'Return-Path: '.$name.' <'.$email.'>'.$eol;
  $headers .= "Message-ID: <".time()." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
  $headers .= "X-Mailer: PHP v".phpversion().$eol;
  $headers .= 'MIME-Version: 1.0'.$eol;
  $headers .= "Content-Transfer-Encoding: 8bit".$eol;
  $headers .= "Content-Type: text/plain; charset=UTF-8".$eol;

$msg .= strip_tags(str_replace("<br>", "\n", $message)).$eol;
$msg .= "-=User information=- \r\n";
$msg .= "User IP : ".$_SERVER["REMOTE_ADDR"].$eol;
$msg .= "Browser info : ".$_SERVER["HTTP_USER_AGENT"].$eol;
ini_set(sendmail_from, $email);  // the INI lines are to force the From Address to be used !
$formsent = mail($mailto, $messagesubject, $msg, $headers);
ini_restore(sendmail_from);

if ($formsent) {
	echo "<div id="response">
			<p>Thank you <b>".$name."</b>, your message is sent!</p>
			</div>";
	}else{
	echo "<div id="error">
			<p>I'm sorry, there's a problem with your form. Please try again!.</p>
			</div>";
	}
protoformclass.js прикрепил ниже.
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

Last edited by Dr.ON on Thu Aug 20, 2009 11:02 am, edited 1 time in total.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Форма контактов использующая Prototype.js

Post by von-hamster »

Яваскрипт заключаем в {literal}{/literal}
Sonya

Re: Форма контактов использующая Prototype.js

Post by Sonya »

Dr.ON wrote: При отправке появляется ошибка:
string(114) "Smarty error: [in tpl_head:26 line 44]: syntax error: unrecognized tag 'new' (Smarty_Compiler.class.php, line 590)"
Скрипты поместил в /modules/Contact.
Код в шаблоне:

Code: Select all

{* contact form script *}
<__script__ type="text/javascript" src="modules/Contact/prototype.js"></__script>
<__script__ type="text/javascript" src="modules/Contact/protoformclass.js"></__script>
<__script__ type="text/javascript">
Event.observe(window,"load",function() {
     
	new Protoform('test');     
	  
});
</__script>
Ошибка: Smarty тег new отсутствует. Откуда Smarty должен знать, что фигурные скобки в этом случае его не касаются? Он видит тег {new..... и ругается.

Чтобы не ругался, заключить весь скрипт в

Code: Select all

{literal}
то, что здесь стоит Smarty не интересует
{/literal}
User avatar
Dr.ON
Forum Members
Forum Members
Posts: 14
Joined: Thu Jul 30, 2009 6:13 pm

Re: Форма контактов использующая Prototype.js

Post by Dr.ON »

von-hamster wrote: Яваскрипт заключаем в {literal}{/literal}
Sonya wrote:Ошибка: Smarty тег new отсутствует. Откуда Smarty должен знать, что фигурные скобки в этом случае его не касаются? Он видит тег {new..... и ругается.

Чтобы не ругался, заключить весь скрипт в

Code: Select all

{literal}
то, что здесь стоит Smarty не интересует
{/literal}
Спасибо за разъяснение. Заработало все, вот только странно - при вроде успешной отправке не выводит сообщения "Thank you ".$name.", your message is sent!", но если повторить отправку выводит ошибку "I'm sorry, there's a problem with your form. Please try again!."
Как отследить в чем проблема? Если возможно это.
Демо можно посмотреть здесь.
User avatar
Dr.ON
Forum Members
Forum Members
Posts: 14
Joined: Thu Jul 30, 2009 6:13 pm

Re: Форма контактов использующая Prototype.js

Post by Dr.ON »

Всё заработало. Сервер wamp не настроен был. Поставил заглушку на sendmail и теперь все ок.
Post Reply

Return to “Russian - русский”