HTML Route Coverage Baseline
HTML Route Coverage Baseline
Historical note (2026-06-08): この文書は Aura.Router / EC-CUBE route名互換を前提にした過去のbaselineである。現在の方針は
standard-first-rule.mdと Web Router全廃後の canonical Resource path を正とする。新規実装で Aura.Router、url()/path()、EC-CUBE route名互換を復活させない。
作成日: 2026-05-26 対象: BeMart HTML front controller / Twig route helpers / admin route coverage
目的
BeMart の HTML 画面で、テンプレートから参照される route が 404 / 405 / Fatal / 未実装表示に落ちない状態を維持する。 EC-CUBE 由来テンプレートは route 名でリンクを生成するため、Aura.Router の route map を front controller と Twig helper の単一 source of truth とする。
方針
- HTML で公開する HTTP method は GET / POST のみ。
- ブラウザ向け HTML には
PUT/DELETE/data-method="put"/data-method="delete"を出さない。 - BEAR Resource の
onPut()/onDelete()は残す。 - 破壊的操作や更新操作は HTML POST → Aura route metadata の
dispatchMethod→ 内部 Resource PUT/DELETE に変換する。 - route name は EC-CUBE テンプレート互換のため維持する。
- route の query/form param 名と Resource param 名が違う場合は Aura route metadata の
queryParamMapで明示的に変換する。 - 未実装 placeholder に逃がすのではなく、既存 Resource か安全な redirect/no-op Resource に接続する。
完了 baseline
2026-05-26 時点で次を満たす。
- Aura route extras 内の
unsupported-route: 0 - Aura route extras の dispatch 欠落: 0
var/templates/**/*.twigのurl()/path()route 欠落: 0- HTML 内の
PUT/DELETEmethod 参照: 0 - 通常画面の「未実装」表示: 0
- ローカルリンククロール結果:
- visited pages: 158
- discovered local links: 158
- link problems: 0
- page problems: 0
- auth responses: 0
主要実装ポイント
~/git/BeMart/src/Support/Router/AuraRouter.php- Aura.Router の match/generate を BEAR.Sunday
RouterInterfaceに接続する - route metadata の
dispatchMethodと alias をRouterMatchに正規化し、未登録 method は BEAR\Resource に委譲して 405 を返す
- Aura.Router の match/generate を BEAR.Sunday
~/git/BeMart/src/Bootstrap.phpAppInterfaceの router/resource を使ってRouterMatchを dispatch するBadRequestExceptionを HTTP response に変換し、HTML 上の raw Fatal を避ける- CSV/PDF 等の download response は Twig render せず body を返す
~/git/BeMart/config/aura-routes.php- Aura.Router の route map と BeMart 固有 metadata を定義
- admin alias route を補完
- HTML 公開 method を GET/POST に限定
~/git/BeMart/src/Resource/Page/ActionRedirect.php~/git/BeMart/src/Resource/Page/Admin/ActionRedirect.php- GET で来た action route や no-op POST の安全な戻り先
検証コマンド
vendor/bin/phpunit --filter 'RouterTest|TemplateRouteCoverageTest|CsrfProtectionCoverageTest' --colors=never
vendor/bin/phpunit tests/Resource --filter HtmlRender --colors=never
composer test:http -- --colors=never
composer test:fake -- --colors=never
composer psalm -- --output-format=console
追加のリンククロールでは、ログイン済み storefront/admin セッションで全ローカル <a href> を巡回し、次を問題として扱う。
- 404
- 405
- 5xx
Fatal errorUncaughtMethod Not AllowedNot FoundUnknown APP_CONTEXT未実装実装していません
今後の注意
- 新しい Twig route を追加したら、必ず Aura route map に route name を追加する。
- 更新/削除リンクを
<a>で追加しない。POST form にする。 PUT/DELETEを HTML に露出させない。- Resource 側の
onPut()/onDelete()を消す必要はない。HTML 入口だけ GET/POST にする。 - placeholder route を再導入しない。未完成機能は安全な Resource へ接続し、画面上に raw Fatal を出さない。