Я сохранил код из этого урока: http://myphpform.com/final-form.php который должен отправить электронное письмо при отправке формы.
Я хотел бы использовать его на простой странице контактов. Вот разметка:
<main role="content">
<section>
<header>
<h1>Contact</h1>
</header>
<section role="contact-us">
<form action="/Script/contact.php" method="post">
<label for="name">Full name</label>
<input type="text" name="yourname" placeholder="Name..." id="name">
<label for="email" name="email">Email address</label>
<input type="text" placeholder="[email protected]" id="email">
<textarea placeholder="Your comments..." rows ="5" name="comment-text" name="comments"></textarea>
<input type="submit" value="Send" name="submit">
</form>
</section>
</section>
</main>
Куда должен идти PHP, и нужно ли его конвертировать каким-либо образом?
Чтобы добавить код в ваше приложение PHP.Gt, вы используете объект Page Logic в PHP.Gt. Page Logic — это PHP, который выполняется в контексте определенной страницы и предоставляет объектно-ориентированную точку входа в код вашей страницы.
Код в предоставленной вами ссылке использует процедурный PHP, поэтому для использования его необходимо поместить в класс.
Как примечание, ваша HTML-форма не должна иметь ничего в action
приписывать. Без атрибута action он будет публиковаться на текущей странице, где будет лежать ваша логика.
Предполагая, что ваша текущая разметка лежит в src/Page/contact.html
создать файл PHP на /src/Page/contact.php
и добавьте класс «Page Logic» ниже:
<?php
namespace App\Page;
class Contact extends \Gt\Page\Logic {
public function go() {
}
}#
Объяснение связи между HTML-файлами (Page Views) и PHP-кодом (Page Logic) доступно в документации: https://github.com/BrightFlair/PHP.Gt/wiki/Pages
Любая логика, которая находится в go()
Метод будет выполнен до того, как страница будет отображена, поэтому именно здесь вам нужно разместить скрипт электронной почты по ссылке, которую вы разместили.
Будет несколько манипуляций с кодом, необходимым для того, чтобы сделать его объектно-ориентированным, но вот упрощенный пример того, чего вы пытаетесь достичь:
go() {
if(!isset($_POST["submit"])) {
// If the form isn't submitted, do not continue.
return;
}
mail("[email protected]", "Contact form message", $_POST["comment-text"]);
header('Location: /thanks');
}
Функции, опубликованные в процедурном примере, могут быть просто присоединены к объекту логики как частные методы, хотя я бы воспользовался этой возможностью, чтобы обновить их, используя надлежащие методы проверки, такие как нативный filter_var функция.
show_error
функция в примере повторяет HTML из PHP, который против сильного разделение интересов обеспечивается PHP.Gt, но Здравствуйте, урок показывает, как с содержимым страницы можно манипулировать с помощью Page Logic — так вы можете вывести сообщение об ошибке в show_error
метод.
Других решений пока нет …