Craft Viewmodel

Crafting ViewModels. Data transformation for views.

attac-t dd71932 2 files · 3.1 KB Updated

File contents

Skill: Craft ViewModel

"View models have one job—providing correct data to views."

The Standard

  1. Single Responsibility: Transform data for views. No business logic.
  2. Implement Arrayable: Public methods become view variables automatically.
  3. Optional Model: Accept ?Model in constructor. Null for create, instance for edit.
  4. Explicit Dependencies: Inject User, Model—whatever the view needs.

The Anti-Patterns

❌ Don't ✅ Do Why
View Composers ViewModel in controller Explicit > implicit
Duplicate create/edit One ViewModel, optional model DRY, single source of truth
Query in controller Query in ViewModel method Controller stays thin
Return arrays Return ViewModel object Type safety, testability

Real-World Examples

See examples.md.

attac-t/the-foundry/tree/main/plugins/laravel-ddd/skills/craft-viewmodel commit dd71932ef7

Frequently asked questions

npx skillmds@latest add attac-t/craft-viewmodel