codeIgniterを5か月使用していますが、コードの記述方法を改善したいと考えています。ユーザー向けのコントローラーからのメソッドは次のとおりです。
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
コードサンプル、物事の正しいやり方を理解するのに役立つ提案は、答えとして受け入れられます。