将卡添加到 Laravel Jetstream / Livewire 配置文件表单
Adding card to Laravel Jetstream / Livewire profile form
我正在尝试将新的个人资料部分添加到默认的 laravel jetstream 个人资料视图。我创建了一个名为 SetContactPreferences
的新 livewire 组件,并通过添加以下内容从 resources/views/profile/show.blade.php
调用它:
@livewire('profile.set-contact-preferences')
我创建的表单在配置文件中按预期显示为新卡片。
但是,我不清楚提交操作应该是什么样子。 The docs say 表单将提交当前经过身份验证的用户以及表单输入,因此我在我的组件中创建了一个方法,如:
public function setContactPreferences($user, $input) {
dd($input);
}
我在 set-contact-preferences.blade.php
文件的顶部添加了 <x-jet-form-section submit="setShowingPreferences">
。
提交表单会抛出以下错误:
Illuminate\Contracts\Container\BindingResolutionException
Unable to resolve dependency [Parameter #0 [ <required> $user ]] in class App\Http\Livewire\Profile\SetContactPreferences
它在 Jetstream 中的工作方式是,当提交 user profile information form
时,该提交由位于 Laravel\Fortify\Http\Controllers\ProfileInformationController
的 ProfileInformationController
上的 update
方法处理。
update
方法需要两个参数,一个Request
对象和一个UpdatesUserProfileInformation
(它是App\Actions\Fortify\UpdateUserProfileInformation
的实例),这两个参数都是从服务容器。
Jetstream 使用 $request->user()
从 Request
对象获取当前用户,然后使用 $request->input()
.[=29 将其与任何表单输入一起传递给 UpdatesUserProfileInformation
=]
如果您不关心其他人更新用户个人资料信息(例如系统管理员),您可以在方法签名中输入提示 Request
对象,它将自动注入:
public function setContactPreferences(Request $request)
{
// Dump the currently authenticated user
dd($request->user());
}
或者,您可以为您的组件提供一个 User
,用于您可能想要更新当前未通过身份验证的用户的信息的情况。
public User $user;
public function setContactPreferences()
{
dd($this->user);
}
然后传递一个User
给组件:
@livewire('profile.set-contact-preferences', ['user' => Auth::user()])
或
@livewire('profile.set-contact-preferences', ['user' => User::find(1)])
我正在尝试将新的个人资料部分添加到默认的 laravel jetstream 个人资料视图。我创建了一个名为 SetContactPreferences
的新 livewire 组件,并通过添加以下内容从 resources/views/profile/show.blade.php
调用它:
@livewire('profile.set-contact-preferences')
我创建的表单在配置文件中按预期显示为新卡片。
但是,我不清楚提交操作应该是什么样子。 The docs say 表单将提交当前经过身份验证的用户以及表单输入,因此我在我的组件中创建了一个方法,如:
public function setContactPreferences($user, $input) {
dd($input);
}
我在 set-contact-preferences.blade.php
文件的顶部添加了 <x-jet-form-section submit="setShowingPreferences">
。
提交表单会抛出以下错误:
Illuminate\Contracts\Container\BindingResolutionException
Unable to resolve dependency [Parameter #0 [ <required> $user ]] in class App\Http\Livewire\Profile\SetContactPreferences
它在 Jetstream 中的工作方式是,当提交 user profile information form
时,该提交由位于 Laravel\Fortify\Http\Controllers\ProfileInformationController
的 ProfileInformationController
上的 update
方法处理。
update
方法需要两个参数,一个Request
对象和一个UpdatesUserProfileInformation
(它是App\Actions\Fortify\UpdateUserProfileInformation
的实例),这两个参数都是从服务容器。
Jetstream 使用 $request->user()
从 Request
对象获取当前用户,然后使用 $request->input()
.[=29 将其与任何表单输入一起传递给 UpdatesUserProfileInformation
=]
如果您不关心其他人更新用户个人资料信息(例如系统管理员),您可以在方法签名中输入提示 Request
对象,它将自动注入:
public function setContactPreferences(Request $request)
{
// Dump the currently authenticated user
dd($request->user());
}
或者,您可以为您的组件提供一个 User
,用于您可能想要更新当前未通过身份验证的用户的信息的情况。
public User $user;
public function setContactPreferences()
{
dd($this->user);
}
然后传递一个User
给组件:
@livewire('profile.set-contact-preferences', ['user' => Auth::user()])
或
@livewire('profile.set-contact-preferences', ['user' => User::find(1)])