首页 > 解决方案 > Livewire - 缺少路由所需的参数

问题描述

当 livewire 渲染视图时,我收到一条错误消息:

[Route: book.show] 缺少必需的参数

但是,如果我只是打印值,例如{{ $slug }},则视图会正确呈现。

看起来模型数据在渲染时不可用。我哪里错了?

我的观点片段

<a href="{{ route('book.show', $slug) }}">
   Show book
</a>

我的组件

class BookForm extends Component
{
    public $slug;
    public $name;
    public $summary;

    protected $listeners = ['fillForm1' => 'editList'];

    public function editList($id)
    {
        $book = Book::find($id);

        $this->slug = $book->slug;
        $this->name = $book->name;
        $this->summary = $book->summary;
    }

    public function render()
    {
        return view('livewire.books.book-form');
    }
}

我的路线

Route::get('/book/{slug}', 'BookController@show')->name('book.show');

我的 BookController / 显示方法

public function show($slug)
{
   ...
}

我正在使用“laravel/framework”:“^7.0”和“livewire/livewire”:“^2.5”

标签: laravellaravel-livewire

解决方案


我认为在渲染视图时,livewire 必须限制不发送模型数据。我使用了以下解决方法,如果您有改进的方法,请告诉我。

public function editList($id)
{
   $book = Book::find($id);

   $this->slug = route('book.show', $book->slug);
   $this->name = $book->name;
   $this->summary = $book->summary;
}

推荐阅读