Anwendungsentwicklung mit CodeIgniter 4
Erweitert eine bestehende CodeIgniter-4-Anwendung über ihre Routen, Modelle, Validierung und Dienste. Hält Geschäftsregeln testbar und prüft Berechtigungen beim Ändern von Datensätzen.
codeigniter4-conventions
Entdecke, wie der Skill hilftWann ist der Skill hilfreich?
Nutze diesen Skill für neue Formulare, API-Endpunkte oder Datenbankänderungen in CodeIgniter 4.
Wobei hilft er dir?
- Definiert explizite Routen mit passenden Anmelde- und Anfragefiltern.
- Validiert Eingaben und begrenzt die veränderbaren Modellfelder.
- Prüft erfolgreiche Anfragen, ungültige Eingaben und verweigerten Zugriff mit Framework-Tests.
Das könntest du fragen
Ergänze ein Formular zum Bearbeiten von Bestellungen in unserer CodeIgniter-4-Anwendung. Mitarbeitende dürfen Lieferhinweise ändern, aber keinen ungültigen Status speichern und keine fremde Kundenbestellung bearbeiten. Zeige Feldfehler ohne Datenverlust an und teste jeden Fall.
Ausführliche Dokumentation
Hier findest du die ursprüngliche Anleitung, Beispiele und Prüfschritte des Skills in ihrer Originalsprache.
Weniger anzeigen
CodeIgniter 4 Conventions
Structure
- Keep the app/ layout (Controllers, Models, Views, Config, Filters, Entities, Libraries, Database) with App\ namespaces matching folders. Never edit system/ or vendor/.
- Controllers extend BaseController, stay thin and return view(), $this->response->setJSON() or redirect(). Business logic goes in models, entities, libraries or services.
- Generate files with
php spark make:controller,make:model,make:migration,make:filterso namespaces and stubs are right.
Routing
- Define every route explicitly in app/Config/Routes.php with HTTP verbs ($routes->get, post, put, delete), groups, names and filters. Use $routes->resource() or presenter() for CRUD where the repo does.
- Keep auto-routing off ($routes->setAutoRoute(false), or $autoRoute = false in app/Config/Routing.php on 4.4+). Never turn on legacy auto-routing.
- Use placeholders such as (:num) and (:segment).
Models and data
- Extend CodeIgniter\Model with $table, $primaryKey, $returnType (array or an Entity), $useTimestamps and $useSoftDeletes as the repo does.
- $allowedFields lists exactly the columns allowed for mass assignment; never insert or update the raw request array without it.
- Validation: $validationRules and $validationMessages on the model, or $this->validate() / validateData() in the controller. Check the result and show the errors.
- Query Builder with bindings: where('id', $id), whereIn(), or $db->query($sql, [$a, $b]). Never concatenate input into SQL; allowlist column and sort names from input.
- Wrap multi-step writes in $db->transStart() / transComplete().
Security
- Enable the csrf filter for POST requests in app/Config/Filters.php; put csrf_field() in forms and send the token header with AJAX.
- Authentication and permissions through filters on route groups (Shield's session, group and permission filters if used), plus per-record checks in controllers.
- Escape every view value with esc() in the right context: esc($v), esc($v, 'attr'), esc($v, 'url'), esc($v, 'js').
- Read input through $this->request->getPost(), getGet(), getJSON() or getVar(), not superglobals.
Services and config
- Reach framework services with service('name') or Config\Services; register your own shared services in app/Config/Services.php for testability.
- Settings live in app/Config classes, read with config('Name'). Environment-specific values go in .env (CI_ENVIRONMENT, app.baseURL, database.default.*). Add new keys to the env template file; never commit .env.
Migrations and seeders
- One change per migration via
php spark make:migration, with up() and down() using Forge. Never edit migrations that already ran elsewhere. - Seeders for development and test data, run with
php spark db:seedlocally. Never run migrate:refresh or migrate:rollback against shared databases.
Testing
- Extend CodeIgniter\Test\CIUnitTestCase. For database tests use DatabaseTestTrait with $migrate, $refresh and $seed on the tests database group.
- HTTP tests with FeatureTestTrait: $this->get(), post(), withSession(), withHeaders(), then assertStatus(), assertSee(), assertJSONFragment(), assertRedirect().
- Replace services with Services::injectMock().
- Run vendor/bin/phpunit or the composer test script.
Before you finish
- Routes defined explicitly in app/Config/Routes.php; auto-routing off.
- $allowedFields and validation rules cover changed models.
- Queries use Query Builder bindings.
- CSRF and auth filters applied; view output escaped with esc().
- Migrations and seeders created with spark; old migrations untouched.
- CIUnitTestCase / FeatureTestTrait tests added and run.
Enthaltene Dateien 1
SKILL.md
Über dieses Skill-Paket
codeigniter4-conventions
codeigniter4-conventions: Entwickelt zuverlässige Backend-Funktionen, APIs und Datenbankänderungen mit Tests für deine Geschäftsregeln.
Weniger anzeigen
codeigniter4-conventions
codeigniter4-conventions: Entwickelt zuverlässige Backend-Funktionen, APIs und Datenbankänderungen mit Tests für deine Geschäftsregeln.
Enthält den vollständigen Skill und seine Begleitdateien (1 Dateien). Der genaue, ursprünglich verfasste Anwendungsbereich bleibt unten erhalten.
Ursprüngliche Skill-Beschreibung (Quellsprache)
Use when working on a CodeIgniter 4 app, CI4 controller, model, view, routes, Routes.php, filters, CSRF, validation rules, allowedFields, Query Builder, services, migration, seeder, spark command, .env config or CIUnitTestCase and FeatureTestTrait tests.
Installiere den Skill, prüfe seine Quelle und Vertrauenseinstellungen und aktiviere ihn für das passende Projekt oder den Agenten.
Voraussetzungen
- Orqestria auf deinem Computer installiert.
