我已經使用codeIgniter 5個月了,我想改進我寫代碼的方式。下面是從控制器,用於用戶的方法:如何在codeigniter中執行mvc
function create_user(){
$user_data = array(
'username' => 'Username', 'firstname' => 'Firstname',
'middlename' => 'Middlename', 'lastname' => 'Lastname',
'password' => 'Password', 'department' => 'Department',
'role' => 'Role'
);
foreach ($user_data as $key => $value) {
$this->form_validation->set_rules($key, $value, 'required|trim');
}
if ($this->form_validation->run() == FALSE) {
$departments = $this->user_model->list_departments();
$it_roles = $this->user_model->list_roles(1);
$tc_roles = $this->user_model->list_roles(2);
$assessor_roles = $this->user_model->list_roles(3);
$data['data'] = array('departments' => $departments, 'it_roles' => $it_roles, 'tc_roles' => $tc_roles, 'assessor_roles' => $assessor_roles);
$data['content'] = 'admin/create_user';
parent::error_alert();
$this->load->view($this->_at, $data);
} else {
$username = $this->input->post('username');
$salt = $this->bcrypt->getSalt();
$hashed_password = $this->bcrypt->hash($this->input->post('password'), $salt);
$fname = $this->input->post('firstname');
$mname = $this->input->post('middlename');
$lname = $this->input->post('lastname');
$department = $this->input->post('department');
$role = $this->input->post('role');
$user_login = array($username, $hashed_password, $salt);
$user_profile = array($fname, $mname, $lname);
$this->user_model->register_user($user_login, $user_profile, $department, $role);
$data['content'] = 'admin/view_user';
parent::success_alert(4, 'User Sucessfully Registered!', 'You may now login using your account');
$data['data'] = array('username' => $username, 'fname' => $fname, 'mname' => $mname, 'lname' => $lname, 'department' => $department, 'role' => $role);
$this->load->view($this->_at, $data);
}
}
我基本上補習班在獲取輸入,輸入驗證,渲染視圖中的錯誤或成功,和其他的東西在一個單一的控制器。這樣做有什麼更好的方式,你如何建議我分解這個功能。有人說我應該在視圖和控制器之間添加一個路由器/調度器來處理POST
,GET
,COOKIE
和SESSION
但我不知道該怎麼做。
任何代碼示例,建議,這將有助於我掌握正確的做事方式將被接受爲答案。
問題的根源在於CodeIgniter並未真正實現MVC。 CI中的* view *只是一個愚蠢的模板,它強制顯示邏輯進入「控制器」。他們稱之爲* model *的主要是一個ORM,它將部分域業務邏輯強制爲「控制器」。而最重要的是,他們將授權作爲控制器的另一個責任。一團糟。 – 2012-07-17 15:56:33