0

OpenCart で構築された私の Web ストアでは、まったく新しいテンプレートとコントローラーを作成しました。パスは template/common/orderForm です。このテンプレートには、非常にシンプルな連絡フォームがあります。

テンプレート コード (それほど多くはありません。ヘッダーも含めませんでした)。

<!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>

最大の問題は、フォームからコントローラーにデータを送信する方法がわからないことです。私が理解する必要があるのは、それを行う方法だけです。フォームデータをメールで送信するなどの他の部分は、自分で処理できます。正直なところ、私は OpenCart システムをまったく理解できません。

コントローラーコード

<?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> \r\n Reply-To: $email \r\n";
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();
}
}
}
?>

フォーム ページに移動するたびに、これらのエラーが発生します。また、送信ボタンも押しません。

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

ご清聴ありがとうございました。私の問題を解決する方法を知っていただければ幸いです。

4

1 に答える 1

3

わかりました、これを試してください...

テンプレート ファイルは次のようになります。

<!doctype html>

<div style="width: 723px;">
<form action="<?php echo $action; ?>" method="post">
Your name: <input type="text" name="your_name"><br>
Your e-mail: <input type="text" name="email"><br>
<input type="submit" value="Order">
</form>
</div>

これは英語に変更されたばかりです....

あなたのコントローラファイルはこれでなければなりません(私はそれの一部を英語に変更しました)

<?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());

/* Check if form has been submitted */
if( isset($_POST['your_name']) )
{
/* Input data check */
$your_name = htmlspecialchars($_POST["your_name"]);
echo $your_name;
$email = htmlspecialchars($_POST["email"]);
/* Set the e-mail recipient */
$myemail = "the.eolithic@gmail.com";
/* Create a new variable by assigning a value to it */
$message_to_myemail = "Hello!
Your contact form has been sent a message!
Sender's name: $your_name
E-mail: $email
end";
/* Send a message using the mail () function */
$from  = "From: $your_name <$email> \r\n Reply-To: $email \r\n";
mail($myemail, $message_to_myemail, $from);
?>
<p>Your message has been successfully sent!</p>
<p>At <a href="index.php">Home >>></a></p>
<?php
/* If you are filling out the form mistakes were made work
the following code: */
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>Please correct the following error:</p>
    <?php echo $myError; ?>
    </body>
    </html>
    <?php
    exit();
}
}
}
}
?>

それが役立つかどうか教えてください...

于 2013-11-03T20:56:07.343 に答える