====== MenuViewModel ====== **Layer:** ''Core'' · **Source:** ''lib/core/Theme/MenuViewModel.php:19'' (lines 19–135) ---- final class MenuViewModel extends AbstractThemeViewModel Menu view model. Carries the already-escaped display fields for a single navigation menu item. Templates print getters directly; the recursive tree structure is preserved via the `children` list. ======= Docblock Metadata ======= ^ Tag ^ Value ^ | ''@category'' | Theme | | ''@author'' | M.Noermoehammad | | ''@license'' | MIT | | ''@version'' | 1.0 | ======= Inheritance ======= ^ Relation ^ Type ^ Meaning ^ | extends | [[scriptlog:lib:core:abstractthemeviewmodel|''AbstractThemeViewModel'']] | parent class/interface | ======= Constants (0) ======= //None.// ======= Properties (1) ======= ^ Visibility ^ Type ^ Name ^ Default ^ Line ^ | ''private'' | ''(untyped)'' | ''$children'' | ''[]'' | 22 | ======= Methods (10) ======= ^ Visibility ^ Method ^ Summary ^ Line ^ | public static | ''fromRow()'' | Build a menu view model from a row. | 31 | | public static | ''fromPrepared()'' | Build a menu view model from already-prepared, already-safe values. | 59 | | public | ''setChildren()'' | Attach child menu items (recursive tree). | 83 | | public | ''id()'' | | 89 | | public | ''label()'' | | 94 | | public | ''url()'' | | 99 | | public | ''parent()'' | | 104 | | public | ''visibility()'' | | 109 | | public | ''children()'' | MenuViewModel[] | 120 | | public | ''hasChildren()'' | bool Whether the item has child items | 131 | ======== fromRow() ======== public static function fromRow(array $row, callable $escape) //lines 31–44 (14)// Build a menu view model from a row. ^ Parameter ^ Type ^ Default ^ Description ^ | ''$row'' | ''array'' | //required// | //none// | | ''$escape'' | ''callable'' | //required// | //none// | **Returns:** ''(none declared)'' — static ======== fromPrepared() ======== public static function fromPrepared(array $prepared) //lines 59–72 (14)// Build a menu view model from already-prepared, already-safe values. Mirrors PostViewModel::fromPrepared(): values are escaped exactly once at the normalization boundary (front_navigation() / prepare_menu()) and stored verbatim. Children are attached afterwards via setChildren(). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$prepared'' | ''array'' | //required// | //none// | **Returns:** ''(none declared)'' — static ======== setChildren() ======== public function setChildren(array $children): void //lines 83–86 (4)// Attach child menu items (recursive tree). ^ Parameter ^ Type ^ Default ^ Description ^ | ''$children'' | ''array'' | //required// | //none// | **Returns:** ''void'' — void ======== id() ======== public function id(): ?string //lines 89–92 (4)// //Takes no parameters.// **Returns:** ''?string'' ======== label() ======== public function label(): ?string //lines 94–97 (4)// //Takes no parameters.// **Returns:** ''?string'' ======== url() ======== public function url(): string //lines 99–102 (4)// //Takes no parameters.// **Returns:** ''string'' ======== parent() ======== public function parent(): ?string //lines 104–107 (4)// //Takes no parameters.// **Returns:** ''?string'' ======== visibility() ======== public function visibility(): ?string //lines 109–112 (4)// //Takes no parameters.// **Returns:** ''?string'' ======== children() ======== public function children(): array //lines 120–123 (4)// //Takes no parameters.// **Returns:** ''array'' — MenuViewModel[] ======== hasChildren() ======== public function hasChildren(): bool //lines 131–134 (4)// //Takes no parameters.// **Returns:** ''bool'' — bool Whether the item has child items ---- //This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//