У меня есть два компонента: «Посты» и «Пост», «Посты» показывают посты, и, щелкнув по изображению, я хочу показать данные кликаемого поста в другом компоненте.
Класс и компонент постов внизу:
Вид компонента:
<div class="post" x-data="{open:false}">
@foreach($posts as $post)
<div>
<h1>{{ $post->name }}</h1>
<h3>{{ $post->body }}</h3>
<img @click="open = !open" wire:click="showPost({{ $post->id }})" src="{{ $post->image }}" alt="">
</div>
@endforeach
<livewireL:post>
</div>
Класс компонента:
class Posts extends Component
{
public $posts, $post;
public function mount(){
$this->posts = Post::all();
}
public function showPost($id){
$post = Post::find($id);
$this->post = $post;
}
public function render()
{
return view('livewire.posts');
}
}
, и это компонент Post и класс , который я хочу показать данные, по которым щелкнули, в этом компоненте, я пробовал $ emit и многие другие в качестве документации, но безрезультатно.
Представление компонента, для которого я хочу отобразить эти данные:
<div x-show="open">
<h1>{{ $post->name }}</h1>
<h3>{{ $post->body }}</h3>
<img src="{{ $post->image }}">
</div>
Класс, который я хочу для передачи данных:
class Post extends Component
{
public $post;
public function mount($id)
{
$this->post = \App\Post::find($id);
}
public function render()
{
return view('livewire.post');
}
}