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
Post a Comment