这是一个user.php控制器
public function verifyLogin() {
if (isset($_POST["email"])) {
$e = $this->input->post("email");
$p = $this->input->post("pass");
$this->form_validation->set_rules("email", "email", "required|valid_email|xss_clean");
$this->form_validation->set_rules("pass", "password", "required|xss_clean");
if ($this->form_validation->run()) {
$data = array(
'select' => '*',
'table' => 'users',
'where' => "email = '$e' AND activated = '1'"
);
$checklogin = $this->query2->selectData($data);
if ($checklogin === FALSE) {
echo "quering userInfo fails. email is wrong or activation not done";
exit();
} else {
foreach ($checklogin as $row) {
$dbid = $row->id;
$dbusername = $row->username;
$dbpassword = $row->password;
$dbemail = $row->email;
if ($p === $dbpassword) {
$login_data = array(
'name' => $dbusername,
'email' => $dbemail,
'password' => $dbpassword,
'id' => $dbid,
'expire' => '86500',
'secure' => TRUE,
'logged_in' => TRUE
);
$this->input->set_cookie($login_data);
$this->session->set_userdata($login_data);
if ($this->session->userdata("logged_in")) {
$time = time();
$now = unix_to_human($time, TRUE, 'us');
$updateLogin = $this->query1->updateLogin($e, $now);
if ($updateLogin) {
echo "success";
} else {
echo 'update failed';
}
} else {
echo "session failed";
}
}else{
echo 'password incorrect';
}
}
}
} else {
echo "form validation fails";
}
} else {
$this->load->view('header');
$this->load->view('login');
$this->load->view('modal');
$this->load->view('footer');
}
}
这是model.php
public function selectData($data){
if(isset($data['direction'])){
$dir = $data['direction'];
}else{
$dir = "ASC";
}
if(isset($data['offset'])){
$off = $data['offset'];
}else{
$off = '0';
}
if(isset($data['select']) && isset($data['table'])){
$this->db->select($data['select'])->from($data['table']);
}
if(isset($data['where'])){
$this->db->where($data['where']);
}
if(isset($data['order_by_name'])){
$this->db->order_by($data['order_by_name'], $dir);
}
if(isset($data['limit'])){
$this->db->limit($data['limit'], $off);
}
$query = $this->db->get();
if($query){
$d = $query->result();
return $d;
}else{
return FALSE;
}
}
这是查询数据库的好方法吗? 我是mvc的新手,我到处都在阅读"胖模特和这个控制器" 有什么办法可以使它成为一个很好的mvc架构?
答案 0 :(得分:0)
只有在您开发时才能接受来自控制器的回声:
if ($checklogin === FALSE) {
echo "quering userInfo fails.
如果检查登录名为false,则显示视图或转到
之类的新方法 if ($checklogin === FALSE) {
$this->showLoginFailed($errorMessage) ;
控制器中的检查登录代码是可以重构为模型的一个很好的例子。然后,如果你需要检查从另一个控制器登录它更容易。将表单验证代码放入模型中将是另一种选择。通常,当您验证表单代码时,您也会插入/更新到数据库表 - 因此在模型中将所有这些详细信息放在一起可以使事情更容易长期。
“胖模型”并不意味着模型中的一种方法可以完成一百件事。这意味着控制器说 - 这个客户表单是否验证并插入数据库?是还是不是? 3行代码。
该模型的代码正在查看表单,验证,数据库等的“胖”细节等。比较控制器中的3行表示50行或更多行。但模型中的方法应该仍然是干净的:小而具体。