Parent Attributes

The Menu and Link, and Html classes also use the ParentAttributes trait, which allows you to add attributes to their parent elements (which are generally a ul or li tags) via setParentAttribute and addParentClass.

Menu::new()
    ->add(Html::raw('<img src="/my-avatar">')
        ->setParentAttribute('id', 'user-123')
        ->addParentClass('-has-avatar')
    );
<ul>
    <li id="user-123" class="-has-avatar">
        <img src="/my-avatar">
    </li>
</ul>

These attributes will only be rendered if the elements are rendered inside of a parent (e.g. a link or a sub menu).

If you want to add classes or set attributes to all items' parents in a menu, the Menu class provides some convenience methods: addItemParentClass, setItemParentAttribute.