Tutorial Codeigniter 4 - Model, Controller & Route for Restful-API

MODEL

1. Jalankan arahan ini pada terminal cmd;

php spark make:model UserModel

2. Kemudian pergi ke folder app/Models/ dan buka file UserModel.php

3. Kemaskini file tersebut mengikut contoh kod ini dan save;

class UserModel extends Model
{
    protected $table            = 'users';
    protected $primaryKey       = 'id';
    protected $useAutoIncrement = true;
    protected $returnType       = 'array';
    protected $useSoftDeletes   = false;
    protected $protectFields    = true;
    protected $allowedFields    = ['email', 'password'];

    protected bool $allowEmptyInserts = false;
    protected bool $updateOnlyChanged = true;

    protected array $casts = [];
    protected array $castHandlers = [];

    // Dates
    protected $useTimestamps = true;
    protected $dateFormat    = 'datetime';
    protected $createdField  = 'created_at';
    protected $updatedField  = 'updated_at';
    protected $deletedField  = 'deleted_at';

    // Validation
    protected $validationRules      = [];
    protected $validationMessages   = [];
    protected $skipValidation       = false;
    protected $cleanValidationRules = true;

    // Callbacks
    protected $allowCallbacks = true;
    protected $beforeInsert   = [];
    protected $afterInsert    = [];
    protected $beforeUpdate   = [];
    protected $afterUpdate    = [];
    protected $beforeFind     = [];
    protected $afterFind      = [];
    protected $beforeDelete   = [];
    protected $afterDelete    = [];
}


CONTROLLER

1. Jalankan arahan ini pada terminal cmd;

php spark make:controller Register
2. Buka folder app/Controllers/Register.php

3. Kemaskini kod dalam file Register.php. Rujuk kod di bawah;

<?php

namespace App\Controllers;

use App\Controllers\BaseController;
use App\Models\UserModel;
use CodeIgniter\API\ResponseTrait;
use CodeIgniter\HTTP\ResponseInterface;

class Register extends BaseController
{
    use ResponseTrait;

    public function index()
    {
        $rules = [
            'email' => ['rules' => 'required|min_length[4]|max_length[255]|valid_email|is_unique[users.email]'],
            'password' => ['rules' => 'required|min_length[8]|max_length[255]'],
            'confirm_password'  => [ 'label' => 'confirm password', 'rules' => 'matches[password]']
        ];

        if ($this->validate($rules)) {
            $model = new UserModel();

            $data = [
                'email'    => $this->request->getVar('email'),
                'password' => password_hash($this->request->getVar('password'), PASSWORD_DEFAULT)
            ];
            $model->save($data);
             
            return $this->respond(['message' => 'Registered Successfully'], 200);

        } else {

            $response = [
                'errors' => $this->validator->getErrors(),
                'message' => 'Invalid Inputs'
            ];
            return $this->fail($response , 409);
           
        }
    }
}


4. Simpan file.

Setup Routes

1. Buka file dalam folder app/Config/Routes.php dan kemaskini;

$routes->group("apis", function($routes) {
    $routes->post("register", "Register::index");
});

6. URL untuk api ini adalah https://example.com/project1/apis/register.

Untuk menjalankan API register ini, buka perisian seperti HTTPie.
- Masukkan URL register tadi.
- Untuk menambah data ke dalam database table users, isikan data ke dalam form body seperti ini;

* email: admin@mail.com
* password: admin12345
* confirm_password: admin12345

- Pastikan POST dipilih dan tekan send.

Setelah selesai memasukan data, sila buka table users dalam database dan lihat data yang sudah termasuk seperti yang diisi tadi.

Comments

Popular posts from this blog

Codeigniter 4 project - User login data info

Tutorial Codeigniter 4 - Install dan setup codeigniter 4