Показывать одну запись после нажатия на laravel 8 jetstream с livewire 2.0

#laravel #mount

#laravel #монтировать

Вопрос:

Я использую laravel 8 jetstream с livewire. У меня есть компонент posts с отображением списка сообщений, я бы хотел, чтобы при нажатии открывалась новая страница только с этим сообщением. У меня есть mount () идентификатор этого сообщения и создать для него маршрут, но он не работает. может кто-нибудь опубликовать простой пример, который я должен следовать следующему руководству http://itsolutionstuff.com/post/laravel-8-livewire-crud-with-jetstream-tailwind-cssexample.html

Комментарии:

1. Прочитайте документацию laravel-livewire.com/docs/2.x/rendering-components

2. класс ShowPost расширяет компонент { public $post; публичная функция mount($id) { $this->post = Post::find($id); } НО КАК НАПИСАТЬ РЕНДЕРИНГ?????

Ответ №1:

Для рендеринга компонентов в Livewire вам необходимо определить render метод в вашем компоненте Livewire. В этом методе вы указываете, какое представление компонента будет отображаться с помощью массива в качестве второго параметра view() функции. Дополнительная информация здесь: https://laravel-livewire.com/docs/2.x/rendering-components#render-method

 public function mount ($id)
{
    $this->post = Post::find($id);
}

public function render()
{
    return view('path.to.view', [
        'post' => $this->post,
    ]);
}
  

Комментарии:

1. Верно, но факт в том, что $ id находится в mount ($ id) и недоступен?

2. Вам нужно вручную установить для него свойство в вашем классе, если вы не используете привязку модели маршрута. Смотрите Обновленный ответ.