【问题标题】:CodeIgniter - Can't load view after loading modelCodeIgniter - 加载模型后无法加载视图
【发布时间】:2013-10-18 12:35:17
【问题描述】:

我探索 codeigniter 已经有一段时间了,我在探索它时遇到的大部分问题已经通过谷歌搜索解决了,但我现在面临的问题有点奇怪。这就是这种情况。如果验证后没有错误,我有一个控制器,它将验证表单并使用数组将所有输入从表单传递到模型。

我在同一个控制器中有另一个功能,它会在调用时发送电子邮件。所以我想做的是验证表单,使用数组发送所有输入以建模并将其插入数据库,然后将电子邮件发送到用户的电子邮件地址。

以下是注册控制器的部分代码:

if($this->form_validation->run() == FALSE){
    //load custom config
    $this->config->load('site_config', TRUE);
    $this->load->library('session');
    $this->load->helper('form');

    //retrieve data
    $data['site_title'] = $this->config->item('site_title', 'site_config');
    $data['site_login'] = $this->config->item('site_login', 'site_config');
    $data['site_url'] = $this->config->item('site_url', 'site_config');
    $data['img_folder_path'] = $this->config->item('img_folder_path', 'site_config');

    $this->load->view('view_header', $data);
    $this->load->view('view_signup',$data);
    $this->load->view('view_footer');
}else{
    $this->load->model('Adduserinfointoactivationtable');

    $user_infos = array('first_name'                 =>  $this->input->post('first_name'),
                        'last_name'                  =>  $this->input->post('last_name'),
                        'email'                      =>  $this->input->post('email'),
                        'tel'                        =>  $this->input->post('tel'),
                        'fax'                        =>  $this->input->post('fax'),
                        'add_1'                      =>  $this->input->post('add_1'),
                        'add_2'                      =>  $this->input->post('add_2'),
                        'city'                       =>  $this->input->post('city'),
                        'post_code'                  =>  $this->input->post('post_code'),
                        'state'                      =>  $this->input->post('state'),
                        'password'                   =>  sha1($this->input->post('pass_2')),
                        'activation_code'            =>  sha1(sha1($this->input->post('email').$this->input->post('pass_2'))),
                        );

    $this->Adduserinfointoactivationtable->addUserInfo($user_infos);
    $this->send_mail();
}

这是模型:

public function addUserInfo ($user_infos){

$sql = "INSERT INTO tbl_user_Account (email_add, activation_code, fname, lname, tel, fax, add1, add2, city, post_code, state, password) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);";

$query = $this->db->query($sql, array($user_infos['email'], $user_infos['activation_code'], $user_infos['first_name'], $user_infos['last_name'], $user_infos['tel'], $user_infos['fax'], $user_infos['add_1'], $user_infos['add_2'], $user_infos['city'], $user_infos['post_code'], $user_infos['state'], $user_infos['password']));

$query->result_array();

}

当我将 $this->send_mail(); 放在 else 之后,它就可以工作了。我做了一些测试,电子邮件功能工作正常。但是当我在$this->Adduserinfointoactivationtable->addUserInfo($user_infos); 之后这样称呼它时,它不会发送电子邮件。我还注意到,无论我在$this->Adduserinfointoactivationtable->addUserInfo($user_infos); 之后做什么,例如加载视图或回显某些内容,它都不起作用。

有人可以在这方面给我建议吗?

【问题讨论】:

  • 你为什么要做 $query->result_array(); ??
  • 是的,太粗心了,因为复制代码并粘贴而没有仔细检查。由于插入了数据,下次应该更关心模型,我没有太关注模型。再次感谢您的评论并指出。 :)

标签: php codeigniter


【解决方案1】:

我认为您的问题可能是,根据CodeIgniter documentation,如果执行“插入”类型查询,$this->db->query() 返回一个布尔值。

您的情况正在发生这种情况。因此,您可能会通过执行$query->result_array() 创建一个致命错误。

作为一个简单的解决方法,您可以尝试以下方法:

if (is_object($query)) {
    return $query->result_array();
} else {
    return $query;
}

【讨论】:

  • 嗨,garbetjie,非常感谢。是的,现在可以了。这可能太愚蠢了,因为我正在插入数据而不是选择数据......我将接受这个作为答案。 :)
【解决方案2】:

您没有在 else 部分加载任何视图,是吗?重定向到相同的功能或成功的功能页面。

【讨论】:

  • 嗨,尼尔兹。正如我所说,我尝试做简单的事情,只是在它之后回显,但效果不佳。
猜你喜欢
  • 2012-04-10
  • 2013-03-01
  • 2014-02-18
  • 1970-01-01
  • 2011-10-07
  • 2013-06-15
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多