Study
CakePHP

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).

Editor Latihan

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.