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