【问题标题】:Livewire - Missing required parameters for routeLivewire - 缺少路由所需的参数
【发布时间】:2021-09-19 22:24:22
【问题描述】:

当 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”

【问题讨论】:

  • 尝试改用&lt;a href="{{ route('book.show', [ 'slug' =&gt; $slug ]) }}"&gt;
  • 如果你打印出 {{ $slug }} 是否正确,如果 route() 没有使用关联数组调用,它会按顺序获取参数,所以它应该可以工作,除非你的路由是嵌套的使用另一个路由参数。
  • 您应该编辑您的问题并从控制器添加您的显示功能,以便我们了解错误
  • 你有一个 Laravel 控制器,但显示了 Livewire 组件的代码。这里缺少一些东西——比如那个控制器代码。请记住,控制器中 hte show() 方法中的变量应命名为 $slug
  • @DaviMendesDev,我试过这样做,但也没有用。

标签: laravel laravel-livewire


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2021-09-02
    • 2019-01-09
    • 2020-08-07
    • 2020-12-25
    • 1970-01-01
    • 2022-01-21
    • 2020-11-01
    相关资源
    最近更新 更多