С помощью компонента 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,
)
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,
)
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()
Profile::make()
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>
<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>
<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>
Profile::make()->avatarPlaceholder('https://robohash.org/username.png')
Profile::make()->avatarPlaceholder('https://robohash.org/username.png')
Profile::make()->avatarPlaceholder('https://robohash.org/username.png')
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'),
])
Profile::make()->menu([ ActionButton::make('Dashboard', '/admin')->icon('home-modern'),])
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>
<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>
<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>
Компонент 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'),
]);
}
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'),
]);
}
public function saveElement(CrudRequestContract $request): JsonResponse
{
//...
return JsonResponse::make()->events([
AlpineJs::event(JsEvent::FRAGMENT_UPDATED, 'profile'),
]);
}