Validasi di CakePHP
Penjelasan
Berbeda dengan Laravel/CodeIgniter yang validasinya biasa ditulis di controller, CakePHP mendorong aturan validasi ditulis DI DALAM Table class (dibahas lebih dalam di materi Model), lewat method validationDefault(Validator $validator) — supaya aturan validasi konsisten dipakai di mana pun Table itu dipanggil.
Contoh Konsep
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class ProdukTable extends Table
{
public function validationDefault(Validator $validator): Validator
{
$validator
->notEmptyString('nama')
->minLength('nama', 3)
->numeric('harga')
->greaterThanOrEqual('harga', 0);
return $validator;
}
}
// Dipakai di controller:
$produk = $this->Produk->newEntity($this->request->getData());
if ($produk->getErrors()) {
// ada error validasi, bisa diakses lewat $produk->getErrors()
}
Praktikum
Di ArtikelTable, tulis validationDefault() yang mewajibkan judul (notEmptyString, minLength 5) dan isi (notEmptyString).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Validasi di CakePHP otomatis DIJALANKAN saat kamu memanggil newEntity() atau patchEntity() dengan data dari form — kamu tidak perlu memanggil method validasi terpisah, cukup cek $entity->getErrors() setelahnya untuk tahu apakah ada pelanggaran.