In my web store, built on OpenCart, I've created absolutely new template and controller for it. Path is template/common/orderForm. In this template there is a very simple contact form.
Template code (not very much, I didn't even include the header).
<!doctype html>
<div style="width: 723px;">
<form action="<?php echo $action; ?>" method="post">
Ваше имя: <input type="text" name="your_name"><br>
Ваше e-mail: <input type="text" name="email"><br>
<input type="submit" value="Заказать">
</form>
</div>
Well, the biggest problem is that I don't know how to send data from form to controller. All I need to understand is how to do that. The other part, like sending form data via email, I can handle myself. Honestly, I totally can't understand OpenCart system.
Controller code
<?php
class ControllerCommonOrderForm extends Controller {
public function index() {
$this->document->setTitle($this->config->get('config_title'));
$this->document->setDescription($this->config->get('config_meta_description'));
$this->data['action'] = $this->url->link('common/orderForm');
$this->data['heading_title'] = $this->config->get('config_title');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/orderForm.tpl')) {
$this->template = $this->config->get('config_template') . '/template/common/orderForm.tpl';
} else {
$this->template = 'default/template/common/orderForm.tpl';
}
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
/* Input data check */
$your_name = $this->config->get('your_name');
echo $your_name;
$email = htmlspecialchars($_POST["email"]);
/* Устанавливаем e-mail адресата */
$myemail = "the.eolithic@gmail.com";
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail = "Здравствуйте!
Вашей контактной формой было отправлено сообщение!
Имя отправителя: $your_name
E-mail: $email
Конец";
/* Отправляем сообщение, используя mail() функцию */
$from = "From: $yourname <$email>
Reply-To: $email
";
mail($myemail, $message_to_myemail, $from);
?>
<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href="index.php">Главную >>></a></p>
<?php
/* Если при заполнении формы были допущены ошибки сработает
следующий код: */
function check_input($data, $problem = "")
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
}
}
?>
Everytime I go to the form page, I get these errors. And I don't even press the submit button.
Notice: Undefined variable: yourname in C:\apache\localhost\www\webshop.kg\catalog\controller\common\orderForm.php on line 40Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\apache\localhost\www\webshop.kg\catalog\controller\common\orderForm.php on line 41
Thank you for your attention. I hope you know how to resolve my problem.