The Tile's executor seat — produces the complete typed tile control
(sap.m.GenericTile / sap.m.ActionTile / sap.m.SlideTile, unified
by the {@see Tile} marker) for a dashboard render pass.
Mirrors the POPO + executor split the Action+Handler pair established
and the Card's getProvider(): class-string<DataProviderInterface> already uses: the
Tile artifact is the metadata POPO; this capability is the executor
that computes the whole {@see Tile} from bound slot values and the
request's runtime context.
The provider owns the entire tile — shell and content. There is
no longer a static getGenericTile() template on the artifact with the
framework injecting tileContent: a tile's shell is frequently
data-driven (a subheader carrying "last used 2 days ago", a
valueColor reflecting health), and only the executor has the data to
compute it. So the executor returns the finished DTO, tileContent
included.
Concrete providers receive their dependencies (repositories, services)
via constructor DI — same convention as {@see ActionHandlerInterface}
and {@see DataProviderInterface}. The Tile's emitter calls
$tile->getTileProvider()->getTile($bound, $context) and returns the
result verbatim.
Unlike a Card's provide() — invoked at the card endpoint, where the
{@see \LaravelUi5\Core\Runtime\ExecutableInvoker} injects the concrete
context by signature — a Tile is resolved inline during dashboard
composition, so the context is passed explicitly. The argument is typed
to the {@see Ui5ContextInterface} contract; the concrete instance is
whatever the active layer bound (the SDK's SdkContext on an SDK host),
which a tile narrows when it needs the actor. Identity-bearing state
travels verbally here, never through a scalar slot.
| Methods | ||
|---|---|---|
public
|
getTile(array<string, mixed> $boundParams, Ui5ContextInterface $context): Tile
|
# |