Laravel Livewire 获取当前页面 ID

Laravel Livewire get current page ID

在一个视图中,我包含了一个 livewire 组件,如下所示:

<livewire:search-comments :post="$post">

我可以如上所示传入post。但问题是这只在 mount():

上完成
public function mount($post)
{
    $this->post = $post;
}

render()中,我有:

$comments = $this->post->comments()
    ->where('comment', 'like', "%{$this->search}%")
    ->get()

问题是我需要在每次 render() 调用时访问 $post,因为搜索的评论与用户当前所在的 post 相关联。我可以在隐藏字段中传递 post ID,但感觉这不是正确的(也是安全的..?)解决方案。

有多种方法可以实现这一点。就像您可以在用户尝试加载新的 post 时发出事件一样。然后使用魔术方法 $refresh 刷新组件。

  protected $listeners = [
        'newPostLoad' => '$refresh',
    ];

或者,

您可以在尝试加载新的 post 时传递 post 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 。

希望这对您有所帮助。让我知道。我再细说