つまり、サイトレイアウトを表示するコントローラーがあり、次に電子メールを管理する別のコントローラーがあります。私の質問は、それらを同じページ(同じビュー)にどのように組み合わせることができますか?電子メールコントローラーの機能をサイトコントローラーに追加するだけですか?そのサイトコントローラーにはsend()メソッドがあり、すべてを「ニュースレター」ビューから「ホーム」ビューに移動しますか?
サイトコントローラー
<?php
class Site extends CI_Controller
{
function index()
{
$this->load->model('site_model');
$data['records']= $this->site_model->getAll();
$this->load->view('home',$data);
}
}
?>
メールコントローラー
class Email extends CI_Controller{
function index()
{
$this->load->view('newsletter');
}
function send()
{
$this->load->library('form_validation');
//field name, error message, validaion rules
$this->form_validation->set_rules('name', 'Name', 'trim|required');
$this->form_validation->set_rules('name', 'Email Address', 'required');
if($this->form_validation->run()==FALSE)
{
$this->load->view('newsletter');
}
else
{
$name = $this->input->post('name');
$email = $this->input->post('email');
$this->load->library('email');
$this->email->set_newline("\r\n");
$this->email->from('', '');
$this->email->to($email);
$this->email->subject('This is an email test');
$this->email->message('Sucess');
$path = $this->config->item('server_root');
$file = $path .'CodeTest/attachments/newsletter1.txt';
$this->email->attach($file);
if($this->email->send())
{
echo ' Your email has been sent.';
}
else {
show_error($this->email->print_debugger());
}
}
}
}