RSSAmplifier

Blog

DerEuroMark

A blog about Frameworks (CakePHP), MVC, Snippets, Tips and more

dereuromark.deRSS feed ↗10 posts

Latest posts

Tailwind/DaisyUI drop-in for CakePHP

If you’ve used CakePHP for any length of time, you’ve probably shipped apps with friendsofcake/bootstrap-ui — the plugin that makes $this->Form->control() output Bootstrap markup without a single hand-written class. It’s been a workhorse for years. But Bootstrap isn’t the only game in town anymore. Over the last couple of years Tailwind CSS has gone from “another utility framework” to the default…

Why Carve markup Changes How You Author Rich Text in Shopware 6

One Source, Ten Surfaces Every Shopware shop hits the same wall eventually. You need rich text somewhere the core doesn’t give you a WYSIWYG - a category landing blurb, a brand story on the manufacturer, a formatted paragraph inside a shipping mail - and you’re left with two bad options. Paste raw HTML into a

Twenty years of Markdown hindsight, in one markup language: Carve

Markdown won because it disappears: you write text, and the markup stays out of your way. But anyone who has used it for real documents knows where it stops disappearing - the moment you need a table with a merged cell, a numbered figure, a citation, or just the string snake_case without a stray italic.

CakePHP 5.4 is around the corner

CakePHP 5.4.0-RC2 just dropped. The final 5.4.0 will follow shortly, so now is the time to pull the release candidate into your apps and surface any regressions while they are still cheap to fix. This post highlights the changes that are most likely to show up in day-to-day code, with small, runnable examples. The full diff between 5.3 and 5.next is roughly 100 commits — what follows is the cream,…

CakePHP Reactions: 👍, ❤️, or 🚀

Most applications eventually need a lightweight way for users to respond to content. A single like button works for some flows, ratings work for others, but there is a useful space in between: reactions. The dereuromark/cakephp-reactions plugin adds that layer to CakePHP applications. It lets users react to any model record with emoji literals such as 👍 , ❤ , or 🚀 , or with…

CakePHP is now fully generics-able

For years, running PHPStan at level 8 on a CakePHP app meant making peace with a wall of missingType.generics and missingType.iterableValue warnings, or quietly silencing them in ignoreErrors . The ORM knew the entity type. The query knew its result type. PHPStan just could not see any of it. That era is over. As of CakePHP 5.3.6+ and cakephp-ide-helper 2.19.3+ , a CakePHP app is officially…

A powerful composable menu builder for CakePHP

Every CakePHP project I’ve ever opened has the same file. It’s called something like MenuHelper.php or Navigation.php , it lives somewhere in src/View/Helper/ , and it grows a new if ($this->request->getParam('controller') === ...) branch every quarter. By the time anyone notices, the helper is doing three jobs at once — declaring the tree, deciding which entry is active, and emitting the markup —…

RFC 9116: security.txt for your PHP apps

… and how we automated it in CakePHP Most security incidents do not start with a genius attacker. They start with an honest person who found something and could not figure out how to tell you. If reporting a bug is harder than tweeting about it, you have quietly chosen public disclosure for them. At the same time AI makes it possible to even automate security testing on a scale we have not seen…

CakePHP Fixture Factories 2.0

A clean v2 API is coming dereuromark/cakephp-fixture-factories just shipped 2.0.0 RC. After a year of incremental cleanup — typed persistEntity() / persistEntities() , the TEntity template on BaseFactory , redirected deprecations — the next major was the right moment to redesign the surface coherently rather than keep layering. This post walks through the why , the what , and the how to upgrade .…

CakePHP AuditStash 2.0: Beyond CRUD

The cakephp-audit-stash plugin has grown a lot of new surface between 1.x and the current 2.0 . What started out as a behavior that records entity-level CRUD into an audit_logs table is now a full mini-app for observability: custom action events beyond CRUD, a dashboard, a coverage report, native chat alerting, and a streaming exporter. This post walks through the highlights of the new major…