Welcome to the Cookbook

loading...

4.1 Pengesahan Data

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Pengesahan Data adalah satu bahagian penting di dalam apa-apa jenis permohonan, kerana ia membantu untuk pastikan bahawa data di dalam satu Model akur kepada peraturan perniagaan untuk permohonan. Sebagai contoh, anda mungkin mahu pastikan kata laluan itu adalah sekurang-kurangnya lapan perkataan, atau untuk pastikan yang usernames adalah unik. Dengan adanya peraturan pengesahan pengendalian akan menjadi lebih mudah.

Terdapat banyak aspek-aspek di dalam proses pengesahan. Apa yang kita akan buat di dalam seksyen ini adalah di bahagian model. Apa yang sebenarnya terjadi apabila anda panggil method save() di dalam model anda? Untuk mengetahui dengan lebih lanjut bagaimana untuk mengendali paparan pengesahan error, sila pergi ke seksyen FormHelper.

Untuk membuat pengesahan data, mula-mula kita perlu membina peraturan pengesahan di dalam Model. Gunakan Mode::validate array di dalam definasi Model; sebagai contoh:

<?php
class User extends AppModel {  
    var $name = 'User';
    var $validate = array();
}
?>
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array();
  5. }
  6. ?>

Contoh di atas $validate array ditambah ke dalam User Model, tetapi array itu juga tidak mempunyai peraturan pengesahan. Anggap bahawa pengguna ada table login, password, email dan juga tarikh lahir, contoh dibawah pula menunjukkan beberapa peraturan pengesahan yang mudah dimasukkan ke dalam table itu:

<?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' => 'alphaNumeric',
        'email' => 'email',
        'born' => 'date'
    );
}
?>
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array(
  5. 'login' => 'alphaNumeric',
  6. 'email' => 'email',
  7. 'born' => 'date'
  8. );
  9. }
  10. ?>

Contoh terakhir ini menunjukkan bagaimana peraturan pengesahan boleh di tambah ke dalam medan model. Untuk medan login, hanya perkataan dan nombor akan diterima, email mesti sah dan tarikh lahir mesti di dalam tarikh yang sah. Mendefinasikan peraturan pengesahan membolehkan CakePHP automagik menunjukkan mesej ralat di dalam borang jikalau data yang dimasukkan tidak mengikut peraturan pengesahan.

CakePHP mempunyai banyak peraturan pengesahan dan mengunakannya memang mudah. Sesetengah peraturan yang disediakan membolehkan anda untuk mengesahkan format email, URL, dan nombor credit kad - kita akan bincang berkenaan topic ini nanti.

Di bawah menunjukkan cara pengesahan yang lebih compleks yang mengambil kelebihan sesetengah peraturan yang disediakan:

<?php
class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' => array(
            'alphaNumeric' => array(
                'rule' => 'alphaNumeric',
                'required' => true,
                'message' => 'Alphanumeric sahaja'
                ),
            'between' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Hanya 5 ke 15 perkataan sahaja'
            )
        ),
        'password' => array(
            'rule' => array('minLength', '8'),
            'message' => '8 perkataan minimum'
        ),
        'email' => 'email',
        'born' => array(
            'rule' => 'date',
            'message' => 'Masukkan tarikh yang sah',
            'allowEmpty' => true
        )
    );
}
?>
  1. <?php
  2. class User extends AppModel {
  3. var $name = 'User';
  4. var $validate = array(
  5. 'login' => array(
  6. 'alphaNumeric' => array(
  7. 'rule' => 'alphaNumeric',
  8. 'required' => true,
  9. 'message' => 'Alphanumeric sahaja'
  10. ),
  11. 'between' => array(
  12. 'rule' => array('between', 5, 15),
  13. 'message' => 'Hanya 5 ke 15 perkataan sahaja'
  14. )
  15. ),
  16. 'password' => array(
  17. 'rule' => array('minLength', '8'),
  18. 'message' => '8 perkataan minimum'
  19. ),
  20. 'email' => 'email',
  21. 'born' => array(
  22. 'rule' => 'date',
  23. 'message' => 'Masukkan tarikh yang sah',
  24. 'allowEmpty' => true
  25. )
  26. );
  27. }
  28. ?>

Dua peraturan pengesahan yang didefinasikan untuk login: ia mesti mempunyai perkataan dan nombor sahaja, dan ia mesti diantara 5 ke 15 perkataan. Medan password pula mesti mempunyai minimum 8 perkataan. Email mesti sah, dan tarikh lahir mesti di dalam bentuk yang sah. Apabila peraturan pengesahan tidak diikuti, mesej-mesej ralat CakePHP akan keluarkan mesej-mesej ralat yang anda letakkan.

Seperti yang ditunjukkan contoh diatas, satu medan boleh mempunyai banyak peraturan pengesahan. Dan jika peraturan yang disediakan tidak menepati peraturan pengesahan anda, anda boleh menambah peaturan yang anda mahu.

Sekarang anda patut paham bagaimana pengesahan berfungsi, mari kita tengok bagaimana pula peraturan ini dimasukkan di dalam model. Ada tiga cara yang berbeza untuk anda definasikan peaturan ini: dengan array, satu peaturan untuk setiap medan, dan juga banyak peraturan untuk satu medan.