Ini adalah tampilan awal untuk halaman setting profile. Ada beberapa link di halaman ini yang belum kita buat. Show
View untuk link-link ini akan kita kerjakan nanti setelah membuat Model dan Controller. Karena itu, mari kita lanjut.. 2. Mengubah Controller SettingUbahlah Controller 1 menjadi seperti ini:
Pada Controller ini kita membuat beberapa method untuk menghandle link-link yang ada di halaman setting profile. Method-method ini masih kosong dan belum kita isi dengan kode. Kita akan lanjut kerjakan nanti setelah membuat model. Oke, sekarang silahkan lanjutkan.. 3. Membuat Model ProfileModel 2 kita butuhkan untuk melakukan update profile user.Buatlah file baru di dalam folder 3 dengan nama 4 dengan isi sebagai berikut:
Pada model ini, kita membuat dua rules yakni 5 dan 6.Kedua rules ini akan kita pakai untuk validasi form edit profile dan edit password. Nah untuk edit data, kita akan panggil method 7 dengan memberikan parameter 8 baru.Oke, sekarang lanjut membuat Controller. 4. Mengubah Controller SettingBuka kembali Controller 1 kemudian ubah method 0 dan 1 menjadi seperti ini:
Pada Controller ini kita melakukan load view yang belum kita buat:
Kedua view ini adalah view untuk menampilkan form edit profile dan form edit password. Mari kita buat! 5. Membuat View untuk FormBuatlah file baru di dalam folder 4 dengan nama 5 dan isi sebagai berikut.📜 2
Hasilnya: Berikutnya buat juga view untuk form edit password. Buatlah file baru di dalam folder 7 dengan nama 8 dan isi sebagai berikut.📜 3
Hasilnya: Catatan untuk edit password: Pada halaman edit password, kita tidak meminta password lama. Sebenarnya ini bukan praktik yang baik. Seharusnya sebelum membuka form ini kita minta dulu password yang lama atau OTP konfirmasi untuk keamanan akun user. Namun, karena ini hanya untuk tutorial. Maka kita tidak melakukan ini. Silahkan buat sendiri ya. Hehe :smile Nah sekarang mari kita uji coba.. Percobaan Edit Profile dan PasswordSilahkan coba untuk mengubah data profle melalui form edit profile. Jika berhasil diubah, maka kita sudah berhasil membuat fitur ubah profile. Berikutnya coba juga untuk ubah password, kemudian lakukan logout dan login dengan password yang baru. Mencatat Tanggal Perubahan PasswordFitur ini penting untuk memberitahu user kapan dia melakukan update password. Coba perhatilan method 1 pada Controller 1, di sana ada variabel 2 seperti ini:
Silahkan aktifkan kode yang dikomentari sehingga menjadi seperti ini:
Artinya, kita akan mengisi kolom 3 pada tabel 4 dengan tanggal dan waktu saat ini.Oh iya, kolom 3 belum kita buat di table 4.Silahkan dibuat dulu. 1. Menambahkan Kolom <?php class Setting extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('auth_model'); if (!$this->auth_model->current_user()) { redirect('auth/login'); } } public function index() { $data['current_user'] = $this->auth_model->current_user(); $this->load->view('admin/setting', $data); } public function upload_avatar() { echo "comming soon!"; } public function remove_avatar() { echo "comming soon!"; } public function edit_profile() { $this->load->library('form_validation'); $this->load->model('profile_model'); $data['current_user'] = $this->auth_model->current_user(); if ($this->input->method() === 'post') { $rules = $this->profile_model->profile_rules(); $this->form_validation->set_rules($rules); if($this->form_validation->run() === FALSE){ return $this->load->view('admin/setting_edit_profile_form.php', $data ); } $new_data = [ 'id' => $data['current_user']->id, 'name' => $this->input->post('name'), 'email' => $this->input->post('email'), ]; if($this->profile_model->update($new_data)){ $this->session->set_flashdata('message', 'Profile was updated'); redirect(site_url('admin/setting')); } } $this->load->view('admin/setting_edit_profile_form.php', $data); } public function edit_password() { $this->load->library('form_validation'); $this->load->model('profile_model'); $data['current_user'] = $this->auth_model->current_user(); if ($this->input->method() === 'post') { $rules = $this->profile_model->password_rules(); $this->form_validation->set_rules($rules); if($this->form_validation->run() === FALSE){ return $this->load->view('admin/setting_edit_password_form.php', $data ); } $new_password_data = [ 'id' => $data['current_user']->id, 'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT), // 'password_updated_at' => date("Y-m-d H:i:s"), ]; if($this->profile_model->update($new_password_data)){ $this->session->set_flashdata('message', 'Password was changed'); redirect(site_url('admin/setting')); } } $this->load->view('admin/setting_edit_password_form.php', $data); } }3Cara cepat: Jalankan Query ini di Phpmyadmin
Atau bisa juga buat secara manual: Buka Phpmyadmin, kemduian buka tabel 4 di database 9. Pada bagian Structure, klik tombol Go di bawah tabel untuk menambahkan kolom baru.Kemudian pada name isi dengan 3 dengan type 1 dan default 2.Setelah itu klik Save. 2. Menampilkan Tanggal Perubahan PasswordBukalah view 3, kemudian pada bagian Security & Password (di sekitar baris 50-52) ubah menjadi seperti ini. |