# Backend Codeigniter Controllers

> Controller patterns, request handling, RESTful design.

- Skill: `valec3/backend-codeigniter-controllers` (Agent Skill)
- Install (CLI): `npx skillmds add valec3/backend-codeigniter-controllers`
- Raw SKILL.md: https://api.skillmd.com/api/skills/valec3/backend-codeigniter-controllers/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: valec3 (https://skillmd.com/u/valec3)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/valec3/backend-codeigniter-controllers

---


# Backend CodeIgniter Controllers

## When to use this skill
- Creating API endpoints
- Handling HTTP requests
- RESTful controllers
- Resource controllers

## Workflow
- [ ] Extend ResourceController for REST
- [ ] Keep controllers thin
- [ ] Validate input
- [ ] Return appropriate responses
- [ ] Handle errors properly

## Instructions

### REST Controller
```php
<?php

namespace App\Controllers;

use CodeIgniter\RESTful\ResourceController;

class UserController extends ResourceController
{
    protected $modelName = 'App\Models\UserModel';
    protected $format = 'json';

    public function index()
    {
        return $this->respond($this->model->findAll());
    }

    public function show($id = null)
    {
        $user = $this->model->find($id);
        if (!$user) {
            return $this->failNotFound();
        }
        return $this->respond($user);
    }

    public function create()
    {
        $rules = ['email' => 'required|valid_email'];
        if (!$this->validate($rules)) {
            return $this->failValidationErrors($this->validator->getErrors());
        }

        $id = $this->model->insert($this->request->getJSON(true));
        return $this->respondCreated(['id' => $id]);
    }
}
```

## Resources
- Use ResourceController for REST
- Validate all input
- Return proper HTTP status

