个人资料管理
个人资料管理
介绍
Laravel Jetstream 的个人资料管理功能是由用户使用右上角的用户个人资料导航下拉菜单来访问。Jetstream 提供了视图和 action,允许用户更新他们的姓名、电子邮件地址和(可选的)个人资料照片。
Actions
与 Jetstream 的大多数功能一样,进行个人资料更新请求而执行的后端逻辑可以在你的应用程序中的 action 类中找到。记住,当用户更新其个人资料时,将调用 App\Actions\Fortify\UpdateUserProfileInformation
类。这个 action 负责验证传入的请求输入并更新用户的个人资料。
因此,想对你的应用程序的这方面资料的管理进行任何自定义,都应该在这个类中进行。当调用时,这个 action 接收当前已验证的$user
和一个包含来自传入的所有请求输入的 $input
数组,包括更新的个人资料照片(如果有的话)。
提示:管理其他资料
如果你需要管理关于用户的其他资料,你并不局限于只修改所提供的 “个人资料 “卡片。你可以根据需要在用户的个人资料仪表板上添加其他的 UI 元素和表单。
视图 / 页面
当使用Livewire 技术栈时,用户的个人资料信息表单是使用 resources/views/profile/update-profile-information.blade.php
Blade模板来显示的。当使用 Inertia 技术栈时,这个视图是使用 resources/js/Pages/Profile/UpdateProfileInformationForm.vue
模板来显示。
这些模板中的每一个都会接收整个已验证的用户对象,这样你就可以根据需要在这些表单中添加其他的字段。添加到表单中的任何其他输入将包含在传递给你的 UpdateUserProfileInformation
action的 $input
数组中。
个人资料照片
启用个人资料照片
如果你想允许用户上传自定义的个人资料照片,你必须在你的应用程序的 config/jetstream.php
配置文件中启用这个功能。要启用这个功能,只需取消注释这个文件中的 features
配置项中的相应功能条目:
use Laravel\Jetstream\Features;
'features' => [
Features::profilePhotos(),
Features::api(),
Features::teams(),
],
在启用个人资料照片功能后,你应该执行 storage:link
Artisan命令。这个命令将在你的应用程序的 public
目录下创建一个软链接,使你的用户的图片能够被你的应用程序提供。关于这个命令的信息, 请参阅 Laravel filesystem documentation:
php artisan storage:link
管理个人资料照片
Jetstream的个人资料照片功能是由 Laravel\Jetstream\HasProfilePhoto
trait 支持的,在 Jetstream 的安装过程中会自动追加到你的 App\Models\User
类。
这个 trait 包含的方法有:updateProfilePhoto
,getProfilePhotoUrlAttribute
,defaultProfilePhotoUrl
和profilePhotoDisk
,如果你需要自定义它们的行为,这些方法都可以被你自己的 App\Models\User
类覆盖。我们建议你阅读这个 trait 的源代码,这样你就能充分了解它为你应用程序提供的功能。
updateProfilePhoto
方法是用来存储个人资料照片的主要方法,由你的应用程序的 App\Actions\Fortify\UpdateUserProfileInformation
action 类调用。
提示:Laravel Vapor
当你的 Jetstream 应用程序在 Laravel Vapor 中运行时,默认下将使用s3
磁盘存储个人资料照片。
账户删除
个人资料管理界面还包括一个操作面板,允许用户删除他们的应用账户。当用户选择删除他们的账户时,App\Actions\Jetstream\DeleteUser
action类会被调用。你可以在这个类中随意地自定义应用程序的账户删除逻辑。
帐户删除功能可以通过从你应用程序的 config/jetstream.php
配置文件中删除该功能来禁用:
use Laravel\Jetstream\Features;
'features' => [
Features::termsAndPrivacyPolicy(),
Features::profilePhotos(),
Features::api(),
Features::teams(),
// Features::accountDeletion(),
],
推荐文章: