Laravel Livewire获取当前页面ID

时间:2020-03-12 14:28:58

标签: laravel laravel-livewire

在视图中,我包括一个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,但这听起来不像是正确的(也是安全的..?)解决方案。

1 个答案:

答案 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。

希望这会有所帮助。让我知道。我会再详细说明