Класс электронной почты в Codeigniter используя форму - PullRequest
0 голосов
/ 22 ноября 2011

Отказ от ответственности: я новичок в веб-разработке.

Сценарий: я создал контактную форму и пытаюсь передать входные данные в функции класса электронной почты, используемые в CodeIgniter.Я получаю неопределенные переменные ошибки при отправке формы.Библиотека электронной почты автоматически загружается для справки.Уже поздно, и я могу упустить что-то простое, но это не повредит опубликовать.Большое спасибо за вашу помощь!

Контроллер:

public function index()
{   
    //form validation
    $this->form_validation->set_rules('email', 'Email Address', 'trim|required|valid_email');
    $this->form_validation->set_rules('subject', 'Subject', 'required');
    $this->form_validation->set_rules('message', 'Message', 'required');

    $this->data['email'] = array(
            'name' => 'email',
            'id' => 'email',
            'type' => 'text',
            'value' => $this->form_validation->set_value('email'),
    );
    $this->data['subject'] = array(
            'name' => 'subject',
            'id' => 'subject',
            'type' => 'text',
            'value' => $this->form_validation->set_value('subject'),
    );
    $this->data['message'] = array(
            'name' => 'message',
            'id' => 'message',
            'type' => 'text',
            'value' => $this->form_validation->set_value('message'),
    );

    if ($this->form_validation->run() == true)
    {   
        $this->email->from($email);
        $this->email->to('support@example.com'); 

        $this->email->subject($subject);
        $this->email->message($message);    

        $this->email->send();

        redirect('contact/success');
    }

    else
    {

        $this->data['error_message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('error_message');

        $title['title'] = 'Contact';

        $this->load->view('public/head_view', $title);
        $this->load->view('public/header_view');
        $this->load->view('public/contact_view', $this->data);
        $this->load->view('public/footer_view');
    }

Просмотр:

<div id="infoMessage"><?php echo $error_message;?></div>

            <?php $attritubes = array('class' => 'nice'); ?>
            <?php echo form_open('contact'); ?>
                <p>Email Address:<br />
                    <?php echo form_input($email); ?>
                </p>
                <p>Subject:<br />
                    <?php echo form_input($subject); ?> 
                </p>
                <p>Message:<br />
                    <?php echo form_textarea($message); ?>
                </p>
                <p><?php echo form_submit('submit', 'Submit'); ?></p>
            <?php echo form_close(); ?>

1 Ответ

1 голос
/ 22 ноября 2011

Ну, вы едва определяете здесь какую-либо переменную:

if ($this->form_validation->run() == true)
    {   
        $this->email->from($email);
        $this->email->to('support@example.com'); 

        $this->email->subject($subject);
        $this->email->message($message);    

        $this->email->send();

        redirect('contact/success');
    }

Откуда $email, $subject, $message? Вы можете использовать что-то вроде (но я предлагаю вам сделать лучше:))

$email = $this->input->post('email');
$subject = $this->input->post('subject');
$message = $this->input->post('message');

Кроме того, убедитесь, что вы загрузили библиотеку электронной почты, прежде чем вызывать ее, и что вы загружаете представление в вашей else{} части (поскольку вы ее опускали, я не могу сказать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...