semitexa / crud
Semitexa CRUD: admin screens declared in one class — a list with its live feed, forms and actions (#[AsCrud]), settings pages (#[AsSettingsPage]), dashboard widgets for screens, field-driven collection feeds (#[AsCollectionFeed]).
Requires
- php: ^8.4
- semitexa/api: *
- semitexa/authorization: *
- semitexa/core: *
- semitexa/orm: *
- semitexa/platform-settings: *
- semitexa/platform-ui: *
- semitexa/ssr: *
Requires (Dev)
- phpunit/phpunit: ^10.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-08 09:15:42 UTC
README
Admin screens declared in one class, over one ORM model, from a list of fields.
#[AsCrud]+CrudDefinition: the whole screen. You get:- the list page in your layout, and a live grid with search, sort, filters and paging;
- create and edit dialogs that live in the address (
?create,?edit=<id>); - delete;
{permission}.read / .create / .edit / .delete, checked on every request and every write;- navigation (
crud_nav()) and Ctrl+K commands.
#[AsSettingsPage]+SettingsDefinition: a settings page whose fields have defaults. Its values are stored per tenant in semitexa/platform-settings and read back withSettingsValues.RecordCountWidget/RecentRecordsWidget: dashboard widgets for a screen (#[AsDashboardWidget]).#[AsCollectionFeed]+CollectionFeed: just the live feed behind aplatform.grid.
Writes go through the ORM's aggregate write engine. It stamps the tenant, checks #[Version]
and fills in created_at / updated_at, and the change event refreshes every open grid. The
model's single-column unique indexes answer as field errors.
Field types come from semitexa/platform-ui (Field::text('title'), …).
Install
Not included by the installer, and not tagged yet. Until its first release, add it to an existing project from the project root:
docker compose run --rm --no-deps --user "$(id -u):$(id -g)" app composer require semitexa/crud
bin/semitexa server:restart
Docs (in semitexa/docs): CRUD screens, settings pages, dashboards and collection feeds.