Advertisement
  1. Code
  2. PHP
  3. CodeIgniter

Validasi Form CodeIgniter: Dari Awal Sampai Selesai

Scroll to top
Read Time: 16 min

() translation by (you can also view the original English article)

Sebagai pengembang aplikasi web, validasi form adalah bagian penting dari pekerjaan Anda, dan seharusnya tidak diremehkan karena dapat menyebabkan kelemahan keamanan pada aplikasi Anda. Anda harus mempertimbangkannya sebagai suatu keharusan jika Anda berusaha memberikan pengalaman pengguna akhir yang profesional.

Pada artikel ini, kita akan melalui perpustakaan validasi form bawaan dalam kerangka CodeIgniter.

Berikut adalah highlight dari artikel hari ini:

  • Validasi form dasar
  • Cascading dan prepping
  • Pesan kesalahan kustom
  • Validasi callback kustom
  • Konfigurasi validasi

Mulai dari Aturan Validasi Dasar

Pada bagian ini, kita akan memulai konsep validasi form dasar di CodeIgniter.

Sebagai bagian dari itu, kita perlu membuat file controller dan view. File controller memuat perpustakaan validasi dan menjalankan aturan validasi terhadap data form yang diajukan. File view menampung kode XHTML form, dan kita akan tetap sederhana untuk kebutuhan kita.

Mari kita lanjutkan dan membuat kedua file ini.

Buat file controller application/controllers/Validation.php dengan konten berikut.

1
<?php
2
// application/controllers/Validation.php

3
defined('BASEPATH') OR exit('No direct script access allowed');
4
5
class Validation extends CI_Controller {
6
    public function __construct() 
7
    {
8
      parent::__construct();
9
    
10
    	// load form and url helpers

11
    	$this->load->helper(array('form', 'url'));
12
    	
13
    	// load form_validation library

14
    	$this->load->library('form_validation');
15
    }
16
	
17
    public function basic()
18
    {
19
        // basic required field

20
        $this->form_validation->set_rules('text_field', 'Text Field One', 'required');
21
        
22
        // basic required field with minimum length

23
        $this->form_validation->set_rules('min_text_field', 'Text Field Two', 'required|min_length[8]');
24
        
25
        // basic required field with maximum length

26
        $this->form_validation->set_rules('max_text_field', 'Text Field Three', 'required|max_length[20]');
27
        
28
        // basic required field with exact length

29
        $this->form_validation->set_rules('exact_text_field', 'Text Field Four', 'required|exact_length[12]');
30
        
31
        // basic required field but alphabets only

32
        $this->form_validation->set_rules('alphabets_text_field', 'Text Field Five', 'required|alpha');
33
        
34
        // basic required field but alphanumeric only

35
        $this->form_validation->set_rules('alphanumeric_text_field', 'Text Field Six', 'required|alpha_numeric');
36
        
37
        // basic email field with email validation

38
        $this->form_validation->set_rules('valid_email_field', 'Email Field', 'required|valid_email');
39
        
40
        // password field with confirmation field matching

41
        $this->form_validation->set_rules('password_field', 'Password One', 'required');
42
        $this->form_validation->set_rules('password_confirmation_field', 'Password Confirmation Field', 'required|matches[password_field]');
43
        
44
        // basic required field with IPv4 validation

45
        $this->form_validation->set_rules('valid_ip_field', 'Valid IP Field', 'required|valid_ip[ipv4]');
46
        
47
        if ($this->form_validation->run() == FALSE)
48
        {
49
        	$this->load->view('validate_form');
50
        }
51
        else
52
        {
53
        	// load success template...

54
        	echo "It's all Good!";
55
        }
56
    }
57
	
58
    public function cascade()
59
    {
60
        // basic required field with cascaded rules

61
        $this->form_validation->set_rules('text_field', 'Text Field One', 'required|alpha|min_length[8]|max_length[20]');
62
         
63
        if ($this->form_validation->run() == FALSE)
64
        {
65
        	$this->load->view('validate_form');
66
        }
67
        else
68
        {
69
        	// load success template...

70
        	echo "It's all Good!";
71
        }
72
    }
73
	
74
    public function prep()
75
    {
76
        // basic required field with trim prepping applied

77
        $this->form_validation->set_rules('min_text_field', 'Text Field Two', 'trim|required|min_length[8]');
78
        
79
        if ($this->form_validation->run() == FALSE)
80
        {
81
        	$this->load->view('validate_form');
82
        }
83
        else
84
        {
85
        	// load success template...

86
        	echo "It's all Good!";
87
        }
88
    }
89
	
90
    public function custom_message()
91
    {
92
        // basic required field with trim prepping applied

93
        $this->form_validation->set_rules('alphabets_text_field', 'Text Field Five', 'required|alpha',
94
        	array('required'=>'Please enter Text Field Five!','alpha'=>'Only alphabets please!'));
95
        
96
        if ($this->form_validation->run() == FALSE)
97
        {
98
        	$this->load->view('validate_form');
99
        }
100
        else
101
        {
102
        	// load success template...

103
        	echo "It's all Good!";
104
        }
105
    }
106
	
107
    public function custom_rule()
108
    {
109
        // basic required field with trim prepping applied

110
        $this->form_validation->set_rules('text_field', 'Text Field Five', 'callback_custom_validation');
111
        
112
        if ($this->form_validation->run() == FALSE)
113
        {
114
        	$this->load->view('validate_form');
115
        }
116
        else
117
        {
118
        	// load success template...

119
        	echo "It's all Good!";
120
        }
121
    }
122
    
123
    public function custom_validation($field_value) 
124
    {
125
        if ($field_value == '' || $field_value == 'demo')
126
        {
127
        	$this->form_validation->set_message('custom_validation', "Come on, don't act like spammer!");
128
        	return FALSE;
129
        }
130
        else
131
        {
132
        	return TRUE;
133
        }
134
    }
135
    
136
    public function configuration()
137
    {
138
        // if you pass group id, only elements in that group will be validated

139
        // $this->form_validation->run('group_one')

140
        if ($this->form_validation->run() == FALSE)
141
        {
142
        	$this->load->view('validate_form');
143
        }
144
        else
145
        {
146
        	// load success template...

147
        	echo "It's all Good!";
148
        }
149
    }
150
}

Selanjutnya, buatlah view file application/views/validate_form.php seperti gambar di bawah ini.

1
<html>
2
    <head>
3
	<title>Form Validation Example</title>
4
	<style>
5
	.field_title{font-size: 13px;font-family:Arial;width: 300px;margin-top: 10px}
6
	.form_error{font-size: 13px;font-family:Arial;color:red;font-style:italic}
7
	</style>
8
	</head>
9
	
10
	<body>
11
		<div class="form_error">
12
		  <?php echo validation_errors(); ?>
13
		</div>
14
		
15
		<?php echo form_open(); ?>
16
		
17
			<h2>Form Validation Example</h2>
18
		
19
			<div>
20
				<div class="field_title">Text Field One (Required)</div>
21
				<input type="text" name="text_field" value="<?php echo set_value('text_field'); ?>" size="30" />
22
			</div>
23
			
24
			<div>
25
				<div class="field_title">Text Field Two (Minimum length)</div>
26
				<input type="text" name="min_text_field" value="<?php echo set_value('min_text_field'); ?>" size="30" />
27
			</div>
28
			
29
			<div>
30
				<div class="field_title">Text Field Three (Maximum length)</div>
31
				<input type="text" name="max_text_field" value="<?php echo set_value('max_text_field'); ?>" size="30" />
32
			</div>
33
			
34
			<div>
35
				<div class="field_title">Text Field Four (Exact length)</div>
36
				<input type="text" name="exact_text_field" value="<?php echo set_value('exact_text_field'); ?>" size="30" />
37
			</div>
38
			
39
			<div>
40
				<div class="field_title">Text Field Five (Alphabets only)</div>
41
				<input type="text" name="alphabets_text_field" value="<?php echo set_value('alphabets_text_field'); ?>" size="30" />
42
			</div>
43
			
44
			<div>
45
				<div class="field_title">Text Field Six (Alphanumeric only)</div>
46
				<input type="text" name="alphanumeric_text_field" value="<?php echo set_value('alphanumeric_text_field'); ?>" size="30" />
47
			</div>
48
			
49
			<div>
50
				<div class="field_title">Email Field</div>
51
				<input type="text" name="valid_email_field" value="<?php echo set_value('valid_email_field'); ?>" size="30" />
52
			</div>
53
			
54
			<div>
55
				<div class="field_title">Password Field</div>
56
				<input type="password" name="password_field" value="" size="30" />
57
			</div>
58
			
59
			<div>
60
				<div class="field_title">Password Confirmation Field</div>
61
				<input type="password" name="password_confirmation_field" value="" size="30" />
62
			</div>
63
			
64
			<div>
65
				<div class="field_title">IP Field</div>
66
				<input type="text" name="valid_ip_field" value="<?php echo set_value('valid_ip_field'); ?>" size="30" />
67
			</div>
68
			
69
			<div class="field_title">
70
				<input type="submit" value="Submit" />
71
			</div>
72
		
73
		</form>
74
	</body>
75
</html>

Dengan konfigurasi ini, Anda akan melihat form saat Anda menjalankan http://your-codeigniter-site/validation/basic di browser Anda. Cobalah untuk mengirimkannya tanpa mengisi salah satu field form, dan Anda akan melihat daftar pesan kesalahan! Jangan khawatir jika Anda tidak mengerti cara kerjanya sama sekali karena kita akan membahas setiap potongan kode secara rinci.

Cerita dimulai dengan metode __construct.

1
public function __construct() 
2
{
3
    parent::__construct();
4
    
5
    // load form and url helpers

6
    $this->load->helper(array('form', 'url'));
7
      
8
    // load form_validation library

9
    $this->load->library('form_validation');
10
}

Saya selalu memilih untuk memuat perpustakaan umum dan pembantu di constructor dari controller itu sendiri karena ini adalah kebiasaan yang bagus untuk menghindari duplikasi kode di tempat lain dalam metode controller. Itulah yang telah kita lakukan di atas—kita memuat form dan url pembantu sehingga kita dapat menggunakan metode utilitas yang disediakan oleh pembantu tersebut selama sisa aplikasi.

Selanjutnya, kita memuat perpustakaan validasi form sehingga memungkinkan kita untuk mengikat aturan validasi form pada elemen-elemen form, seperti yang akan kita lihat di bagian berikutnya.

Mari kita melalui kode dari metode basic. Apa yang dilakukan metode ini? Jika Anda memanggilnya dengan metode GET, itu akan menampilkan form-nya, dan jika dipanggil menggunakan metode POST, ini akan menerapkan aturan validasi pada data yang dikirimkan dan menampilkan pesan kesalahan, jika ada, beserta form-nya.

1
public function basic()
2
{
3
	// basic required field

4
	$this->form_validation->set_rules('text_field', 'Text Field One', 'required');
5
	
6
	// basic required field with minimum length

7
	$this->form_validation->set_rules('min_text_field', 'Text Field Two', 'required|min_length[8]');
8
	
9
	// basic required field with maximum length

10
	$this->form_validation->set_rules('max_text_field', 'Text Field Three', 'required|max_length[20]');
11
	
12
	// basic required field with exact length

13
	$this->form_validation->set_rules('exact_text_field', 'Text Field Four', 'required|exact_length[12]');
14
	
15
	// basic required field but alphabets only

16
	$this->form_validation->set_rules('alphabets_text_field', 'Text Field Five', 'required|alpha');
17
	
18
	// basic required field but alphanumeric only

19
	$this->form_validation->set_rules('alphanumeric_text_field', 'Text Field Six', 'required|alpha_numeric');
20
	
21
	// basic email field with email validation

22
	$this->form_validation->set_rules('valid_email_field', 'Email Field', 'required|valid_email');
23
	
24
	// password field with confirmation field matching

25
	$this->form_validation->set_rules('password_field', 'Password One', 'required');
26
	$this->form_validation->set_rules('password_confirmation_field', 'Password Confirmation Field', 'required|matches[password_field]');
27
	
28
	// basic required field with IPv4 validation

29
	$this->form_validation->set_rules('valid_ip_field', 'Valid IP Field', 'required|valid_ip[ipv4]');
30
	
31
	if ($this->form_validation->run() == FALSE)
32
	{
33
		$this->load->view('validate_form');
34
	}
35
	else
36
	{
37
		// load success template...

38
		echo "It's all Good!";
39
	}
40
}

Karena kita sudah memasukkan perpustakaan validasi form di constructor, Anda dapat mengaksesnya dengan menggunakan konvensi $this->form_validation.

Metode set_rules digunakan untuk mengikat aturan validasi pada field form. Umumnya, dibutuhkan tiga argumen:

  • Argumen pertama adalah nama field form.
  • Argumen kedua adalah label yang digunakan untuk referensi field form saat menampilkan pesan kesalahan untuk field tersebut.
  • Argumen ketiga adalah peraturan yang ingin Anda terapkan pada field form. Perpustakaan validasi form dilengkapi dengan banyak aturan bawaan yang bisa Anda gunakan.

Mari kita melalui beberapa peraturan ini karena kita telah menggunakannya dalam metode dasar.

Salah satu aturan yang paling sering digunakan adalah aturan required, yang membuat field form wajib diisi.

1
// basic required field

2
$this->form_validation->set_rules('text_field', 'Text Field One', 'required');

Selanjutnya, jika Anda ingin membuat field form dengan panjang tertentu, Anda dapat menggunakan aturan min_length dan max_length.

1
// basic required field with minimum length

2
$this->form_validation->set_rules('min_text_field', 'Text Field Two', 'required|min_length[8]');
3
      
4
// basic required field with maximum length

5
$this->form_validation->set_rules('max_text_field', 'Text Field Three', 'required|max_length[20]');

Yang pertama memastikan bahwa field form min_text_field adalah field wajib dan pengguna harus memasukkan setidaknya delapan karakter di dalamnya. Yang kedua menempatkan batasan pada karakter maksimal yang bisa dimasukkan di field teks max_text_field, selain menjadikannya sebagai field wajib.

Anda mungkin telah memperhatikan bahwa kita telah menggunakan operator | untuk menerapkan beberapa peraturan sekaligus. Ini disebut cascading, dan kita akan kembali lagi nanti.

Di sisi lain, jika Anda ingin membuat field form dengan panjang yang tepat, Anda dapat menggunakan aturan exact_length.

1
// basic required field with exact length

2
$this->form_validation->set_rules('exact_text_field', 'Text Field Four', 'required|exact_length[12]');

Bagaimana jika Anda ingin memvalidasi field form ke abjad atau alfanumerik saja?

1
// basic required field but alphabets only

2
$this->form_validation->set_rules('alphabets_text_field', 'Text Field Five', 'required|alpha');
3
      
4
// basic required field but alphanumeric only

5
$this->form_validation->set_rules('alphanumeric_text_field', 'Text Field Six', 'required|alpha_numeric');

Kandidat berikutnya adalah validasi email.

1
// basic email field with email validation

2
$this->form_validation->set_rules('valid_email_field', 'Email Field', 'required|valid_email');

Selanjutnya, aturan matches memungkinkan Anda membandingkan nilai field form dengan nilai field form yang lain. Contoh terbaiknya adalah field password, yang harus sesuai dengan field konfirmasi password saat Anda mengirimkan form.

1
// password field with confirmation field matching rule

2
$this->form_validation->set_rules('password_field', 'Password One', 'required');
3
$this->form_validation->set_rules('password_confirmation_field', 'Password Confirmation Field', 'required|matches[password_field]');

Contoh terakhir dalam metode dasar kita adalah tentang memvalidasi alamat IP.

Aturan valid_ip memvalidasi alamat IP terhadap argumen pertama yang dikirimkan. Dalam contoh berikut, kita hanya mencari jenis alamat IP ipv4!

1
// basic required field with IPv4 validation

2
$this->form_validation->set_rules('valid_ip_field', 'Valid IP Field', 'required|valid_ip[ipv4]');

Jadi, sajauh itu validasi dasar yang diperhatikan di CodeIgniter.

Bagaimana Cascading dan Prepping Bekerja

Pada bagian ini, kita akan mengeksplorasi cascading dan prepping, yang memungkinkan Anda menggabungkan beberapa aturan validasi dalam satu kali jalan.

Sebenarnya, saya akan mengatakan bahwa kita telah benar-benar menggunakan cascading dalam contoh kita sebelumnya. Ingatlah bahwa operator pipa yang digunakan untuk menggabungkan beberapa peraturan—dan ya, aturan validasi yang disebut cascading.

Ambil kode dari metode cascade.

1
public function cascade()
2
{
3
	// basic required field with cascaded rules

4
	$this->form_validation->set_rules('text_field', 'Text Field One', 'required|alpha|min_length[8]|max_length[20]');
5
	 
6
	if ($this->form_validation->run() == FALSE)
7
	{
8
		$this->load->view('validate_form');
9
	}
10
	else
11
	{
12
		// load success template...

13
		echo "It's all Good!";
14
	}
15
}

Seperti ditunjukkan pada contoh di atas, kita telah menerapkan empat aturan validasi yang dipisahkan oleh operator | ke kotak teks text_field. Jadi itu harus melalui setiap aturan untuk validasi form agar berhasil dalam kasus ini!

Cobalah dan lihat bagaimana cara kerjanya!

Selanjutnya, ada prepping yang memungkinkan Anda menerapkan operasi tertentu pada data yang sedang dikirim. Lebih sering daripada tidak, Anda ingin menghapus spasi di depan dan di belakang pada data yang dikirim pengguna. Mungkin hal pertama yang terlintas dalam pikiran Anda dalam kasus ini adalah dengan menggunakan fungsi trim, dan kabar baiknya adalah Anda bisa menggunakannya!

Itulah sebenarnya yang dilakukan metode prep kita.

1
public function prep()
2
{
3
	// basic required field with trim prepping applied

4
	$this->form_validation->set_rules('min_text_field', 'Text Field Two', 'trim|required|min_length[8]');
5
6
	if ($this->form_validation->run() == FALSE)
7
	{
8
		$this->load->view('validate_form');
9
	}
10
	else
11
	{
12
		// load success template...

13
		echo "It's all Good!";
14
	}
15
}

Seperti yang Anda lihat, kita telah menggunakan trim kata-kata selain aturan validasi. Jadi datanya dipangkas dulu, dan kemudian akan melewati aturan validasi lainnya. Sebenarnya, Anda bisa menggunakan fungsi PHP yang mengambil satu argumen sesuai dokumentasi CodeIgniter.

Coba jalankan contoh kita dengan menambahkan beberapa spasi tambahan, dan lihat bagaimana kelanjutannya.

Kustomisasi Pesan Kesalahan

Jika Anda memiliki kesempatan untuk menjalankan contoh di atas, mungkin Anda telah memperhatikan bahwa pesan kesalahan yang ditampilkan kepada pengguna cukup sistematis dan dihasilkan oleh mesin. Mungkin Anda ingin lebih kreatif dan mengubahnya dalam kasus tertentu.

Mari kita lihat bagaimana Anda bisa mengubah pesan kesalahan untuk aturan validasi apapun. Tarik kode metode custom_message.

1
public function custom_message()
2
{
3
    // field with custom error message

4
	$this->form_validation->set_rules('alphabets_text_field', 'Text Field Five', 'required|alpha',
5
	  array('required'=>'Please enter Text Field Five!','alpha'=>'Only alphabets please!'));
6
7
	if ($this->form_validation->run() == FALSE)
8
	{
9
		$this->load->view('validate_form');
10
	}
11
	else
12
	{
13
		// load success template...

14
		echo "It's all Good!";
15
	}
16
}

Harap perhatikan argumen keempat yang diberikan pada metode set_rules. Ini berisi serangkaian pesan validasi kustom untuk setiap aturan validasi, dan kunci setiap item array adalah aturan validasi itu sendiri.

1
array(
2
    'required'=>'Please enter Text Field Five!',
3
    'alpha'=>'Only alphabets please!'
4
)

Cobalah, dan Anda harus melihat pesan kesalahan kustom kita! Cukup keren, ya?

Callback Validasi Kustom

Meskipun perpustakaan validasi bawaan menyediakan beberapa aturan validasi, selalu ada kebutuhan untuk membuat yang kustom dalam pekerjaan pengembangan sehari-hari Anda. Itulah yang akan kita bahas di bagian ini.

Untuk mendemonstrasikannya, kita akan membuat callback validasi kustom, dan nanti kita akan melihat bagaimana menggunakannya bersamaan dengan metode set_rules.

Untuk mulai dengannya, mari kita lihat sekilas metode custom_rule.

1
public function custom_rule()
2
{
3
    // field with custom validation callback passed

4
	$this->form_validation->set_rules('text_field', 'Text Field Five', 'callback_custom_validation');
5
6
	if ($this->form_validation->run() == FALSE)
7
	{
8
		$this->load->view('validate_form');
9
	}
10
	else
11
	{
12
		// load success template...

13
		echo "It's all Good!";
14
	}
15
}

Ini tidak berbeda dengan pemanggilan metode set_rules biasa kecuali bahwa kita telah menyediakan callback validasi kustom custom_validation bukannya aturan validasi inti. Yang penting untuk diperhatikan di sini adalah Anda perlu awalan calback validasi kustom dengan callback_ saat Anda mengirimkannya sebagai argumen.

Selanjutnya, mari kita terapkan callback validasi kustom.

1
public function custom_validation($field_value) 
2
{
3
	if ($field_value == '' || $field_value == 'demo')
4
	{
5
		$this->form_validation->set_message('custom_validation', "Come on, don't act like spammer!");
6
		return FALSE;
7
	}
8
	else
9
	{
10
		return TRUE;
11
	}
12
}

Bila callback validasi kustom Anda dipanggil, nilai yang dimasukkan oleh pengguna akan dikirimkan sebagai argumen pertama. Sehingga $field_value berisi nilai yang dimasukkan oleh pengguna, yang dengannya Anda dapat menerapkan logika validasi kustom Anda.

Pada contoh di atas, Anda melihat pesan kesalahan jika Anda memasukkan nilai kosong atau demo di field teks Text Field Five. Penting untuk diperhatikan bahwa ketika Anda menetapkan pesan kesalahan menggunakan metode set_message, argumen pertama adalah nama metode callback validasi kustom itu sendiri.

Dan itulah kisah callback validasi kustom.

Yang tidak kalah penting, adalah konfigurasi validasi yang patut mendapat perhatian saat kita bergerak menuju kesimpulan artikel ini.

Konfigurasi Validasi

Sebagai pengembang CodeIgniter, Anda seharusnya sudah terbiasa dengan direktori config, yang memungkinkan Anda untuk mengkonfigurasi berbagai aspek aplikasi CodeIgniter Anda.

Sebagai contoh, database.php memungkinkan Anda untuk menentukan pengaturan yang berhubungan dengan database, sementara autoload.php memungkinkan Anda menentukan komponen yang harus dimuat secara otomatis saat bootstrap sebuah aplikasi.

Dengan cara yang sama, Anda bisa membuat file form_validation.php di bawah direktori config dan menggunakan file tersebut untuk menentukan aturan validasi tingkat aplikasi yang dapat digunakan secara global. Jika terdengar asing bagi Anda, tidak ada cara yang lebih baik untuk memahaminya daripada benar-benar melihat contoh praktis.

Buat file application/config/form_validation.php dengan konten berikut.

1
<?php
2
$config = array(
3
    array(
4
        'field' => 'text_field',
5
        'label' => 'Text Field One',
6
        'rules' => 'required'
7
    ),
8
    array(
9
        'field' => 'min_text_field',
10
        'label' => 'Text Field Two',
11
        'rules' => 'required|min_length[8]'
12
    ),
13
    array(
14
        'field' => 'max_text_field',
15
        'label' => 'Text Field Three',
16
        'rules' => 'required|max_length[20]'
17
    )
18
);

Sekarang, mari kita lihat seperti apa metode configuration kita.

1
public function configuration()
2
{
3
    // if you pass group id, only elements in that group will be validated

4
    // $this->form_validation->run('group_one')

5
    if ($this->form_validation->run() == FALSE)
6
    {
7
    	$this->load->view('validate_form');
8
    }
9
    else
10
    {
11
    	// load success template...

12
    	echo "It's all Good!";
13
    }
14
}

Coba jalankan http://your-codeigniter-site/validation/configuration dan kirimkan form kosong. Anda akan melihat pesan kesalahan untuk tiga field form! Tapi tunggu, dari mana asalnya, karena kita belum membuat aturan validasi apa pun dalam metode konfigurasi kita?

Pengguna dengan mata yang tajam akan memperhatikan bahwa secara otomatis diambil dari file konfigurasi validasi yang didefinisikan pada application/config/form_validation.php. Bukankah itu menakjubkan? Hal ini memungkinkan Anda untuk memusatkan aturan di satu tempat dan mengurangi duplikasi kode dalam metode action.

Sebenarnya, Anda bisa mengelompokkan peraturan dan menerapkan validasi ke field dari hanya kelompok tertentu saja. Mari kita lihat bagaimana melakukannya.

Ganti kode di application/config/form_validation.php dengan berikut ini.

1
<?php
2
$config = array(
3
    'group_one' => array(
4
        array(
5
            'field' => 'text_field',
6
            'label' => 'Text Field One',
7
            'rules' => 'required'
8
        )
9
    ),
10
    'group_two' => array(
11
        array(
12
            'field' => 'min_text_field',
13
            'label' => 'Text Field Two',
14
            'rules' => 'required|min_length[8]'
15
        ),
16
        array(
17
            'field' => 'max_text_field',
18
            'label' => 'Text Field Three',
19
            'rules' => 'required|max_length[20]'
20
        )
21
    )
22
);

Dalam metode configuration Anda, cari baris berikut:

1
if ($this->form_validation->run() == FALSE)

Dan ganti dengan:

1
if ($this->form_validation->run('group_one') == FALSE)

Sekarang, cobalah mengirimkan form kosong, dan Anda akan melihat kesalahan hanya untuk Text Field One. Itu karena kita telah mengirimkan group_one sebagai id grup, jadi hanya elemen dalam grup tersebut yang akan divalidasi.

Akhirnya, mari kita lihat jenis konfigurasi yang memungkinkan Anda menentukan aturan berdasarkan URL.

Ganti kode di application/config/form_validation.php dengan kode berikut.

1
$config = array(
2
    'validation/configuration' => array(
3
        array(
4
            'field' => 'max_text_field',
5
            'label' => 'Text Field Three',
6
            'rules' => 'required|max_length[20]'
7
        )
8
    )
9
);

Dalam konfigurasi jenis ini, Anda perlu menggunakan kombinasi dari nama controller dan nama metode yang dipisahkan oleh karakter /. Dengan cara ini, Anda bisa menentukan aturan untuk beberapa metode action sekaligus.

Sekarang, Anda melihat pesan kesalahan untuk Text Field Three jika Anda mencoba mengirimkan form kosong di http://your-codeigniter-site/validation/configuration.

Dan itu mengakhiri cerita tentang konfigurasi validasi dan artikel ini juga!

Kesimpulan

Pada artikel ini, kita benar-benar membahas validasi form di CodeIgniter.

Kita memulai perjalanan kita dengan aturan validasi dasar, dan kemudian kita beralih ke topik yang lebih lanjut seperti cascading, prepping, dan validasi konfigurasi.

Saya harap Anda menikmati artikel ini, dan Anda dapat berbagi pandangan berharga Anda menggunakan umpan di bawah ini!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.