在视图中,我包括一个livewire组件,如下所示:
<livewire:search-comments :post="$post">
我可以如上所示通过帖子。但问题在于,此操作仅在mount()
上完成:
public function mount($post)
{
$this->post = $post;
}
在render()
中,我有:
$comments = $this->post->comments()
->where('comment', 'like', "%{$this->search}%")
->get()
问题是我需要在每个$post
调用中访问render()
,因为搜索到的评论与用户当前所在的帖子有关。我可以在一个隐藏的字段中传递帖子ID,但这听起来不像是正确的(也是安全的..?)解决方案。
答案 0 :(得分:1)
有多种方法可以实现这一目标。就像您可以在用户尝试加载新帖子时发出事件。然后使用魔术方法$ refresh刷新组件。
protected $listeners = [
'newPostLoad' => '$refresh',
];
或者
您可以在尝试加载新帖子时传递帖子ID。像这样:
// as per your snippets above I assume ur blade has post collection which holds id for each posts.
wire:click=loadNewPost(id)
然后,您可以在loadNewPost函数中重置$ this-> post。
希望这会有所帮助。让我知道。我会再详细说明