Компоненты

Profile

Основы

С помощью компонента Profile вы можете отобразить карточку профиля пользователя с кнопкой выхода, переходом в профиль и дополнительным меню.

make(
?string $route = null,
?string $logOutRoute = null,
?Closure $avatar = null,
?Closure $nameOfUser = null,
?Closure $username = null,
?string $guard = null,
)
make(
?string $route = null,
?string $logOutRoute = null,
?Closure $avatar = null,
?Closure $nameOfUser = null,
?Closure $username = null,
?string $guard = null,
)
  • $route - URL страницы с профилем,
  • $logOutRoute - URL для logout,
  • $avatar - Аватар пользователя,
  • $nameOfUser - Имя пользователя,
  • $username - Nickname пользователя,
  • $guard - Guard.
Profile::make()
Profile::make()
<x-moonshine::layout.profile
route="/admin/profile"
log-out-route="/logout"
avatar="/vendor/moonshine/avatar.jpg"
name-of-user="Admin"
username="admin@getmoonshine.app"
>
</x-moonshine::layout.profile>
<x-moonshine::layout.profile
route="/admin/profile"
log-out-route="/logout"
avatar="/vendor/moonshine/avatar.jpg"
name-of-user="Admin"
username="admin@getmoonshine.app"
>
</x-moonshine::layout.profile>

Аватар placeholder

Profile::make()->avatarPlaceholder('https://robohash.org/username.png')
Profile::make()->avatarPlaceholder('https://robohash.org/username.png')
Profile::make()->menu([
ActionButton::make('Dashboard', '/admin')->icon('home-modern'),
])
Profile::make()->menu([
ActionButton::make('Dashboard', '/admin')->icon('home-modern'),
])
<x-moonshine::layout.profile
route="/admin/profile"
log-out-route="/logout"
avatar="/vendor/moonshine/avatar.jpg"
name-of-user="Admin"
username="admin@getmoonshine.app"
>
<x-slot:before></x-slot:before>
<x-slot:after></x-slot:after>
 
<x-slot:menu>
<ul class="dropdown-menu">
<li class="dropdown-menu-item p-2">
<x-moonshine::link-native href="/admin/profile">
Profile
</x-moonshine::link-native>
</li>
</ul>
</x-slot:menu>
</x-moonshine::layout.profile>
<x-moonshine::layout.profile
route="/admin/profile"
log-out-route="/logout"
avatar="/vendor/moonshine/avatar.jpg"
name-of-user="Admin"
username="admin@getmoonshine.app"
>
<x-slot:before></x-slot:before>
<x-slot:after></x-slot:after>
 
<x-slot:menu>
<ul class="dropdown-menu">
<li class="dropdown-menu-item p-2">
<x-moonshine::link-native href="/admin/profile">
Profile
</x-moonshine::link-native>
</li>
</ul>
</x-slot:menu>
</x-moonshine::layout.profile>

Fragments

Компонент Profile размещен внутри Fragment, благодаря чему данные профиля обновляются без перезагрузки страницы при изменении пользователя. При необходимости вы можете вручную перезапустить обновление блока профиля, вызвав событие JSEvents для фрагмента profile.

Пример с обновлением из метода контроллера:

public function saveElement(CrudRequestContract $request): JsonResponse
{
//...
return JsonResponse::make()->events([
AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'profile'),
]);
}
public function saveElement(CrudRequestContract $request): JsonResponse
{
//...
return JsonResponse::make()->events([
AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'profile'),
]);
}