Laravel livewire 在不在同一页面的两个组件之间传递数据
Laravel livewire passing data between two components not in the same page
我是第一次使用 Laravel 和 Livewire,如果问题很愚蠢,请见谅。
我已阅读 Livewire 文档 https://laravel-livewire.com/docs/2.x/events
那
Livewire 组件可以通过全局事件系统相互通信。只要两个 Livewire 组件在同一个页面上,它们就可以使用事件和侦听器进行通信。
我有两个需要通信的数据表,但它们不在同一页面上。
是否有可能的解决方法或解决方案?
非常感谢。
路由模型绑定就是解决这个问题的方法。如果你在一个组件中加载,例如从一行 User table 中加载 id,你可以重定向到另一个通过路由绑定该 id 的组件。
用户 Table blade
<td>
<a href="{{ route('user.activity', ['id' => $user->id]) }}">View Activity</a>
<td>
web.php
Route::get('activity/user/{id}', UserActivityComponent::class)->name('user.activity');
UserActivityComponent 一旦您点击或通过标签访问它(在我的示例中),它就会被渲染。所以,就像文档说的,你可以这样做
class UserActivityComponent extends Component
{
public $user;
public $name;
public $email;
//....
public function mount($id)
{
$this->user = User::find($id);
$this->name = $this->user->name;
$this->email = $this->user->email;
}
public function render()
{
return view('user-activity-component');
}
}
并在 UserActivityComponent blade 中部署您想要在此显示的所有内容
我是第一次使用 Laravel 和 Livewire,如果问题很愚蠢,请见谅。
我已阅读 Livewire 文档 https://laravel-livewire.com/docs/2.x/events 那
Livewire 组件可以通过全局事件系统相互通信。只要两个 Livewire 组件在同一个页面上,它们就可以使用事件和侦听器进行通信。
我有两个需要通信的数据表,但它们不在同一页面上。
是否有可能的解决方法或解决方案? 非常感谢。
路由模型绑定就是解决这个问题的方法。如果你在一个组件中加载,例如从一行 User table 中加载 id,你可以重定向到另一个通过路由绑定该 id 的组件。 用户 Table blade
<td>
<a href="{{ route('user.activity', ['id' => $user->id]) }}">View Activity</a>
<td>
web.php
Route::get('activity/user/{id}', UserActivityComponent::class)->name('user.activity');
UserActivityComponent 一旦您点击或通过标签访问它(在我的示例中),它就会被渲染。所以,就像文档说的,你可以这样做
class UserActivityComponent extends Component
{
public $user;
public $name;
public $email;
//....
public function mount($id)
{
$this->user = User::find($id);
$this->name = $this->user->name;
$this->email = $this->user->email;
}
public function render()
{
return view('user-activity-component');
}
}
并在 UserActivityComponent blade 中部署您想要在此显示的所有内容