Laravel Volt路由中如何获取CategoryID?适配不同于Route::get的方式
解决Laravel Volt路由参数获取问题
在Volt组件中获取路由参数有两种简洁的实现方式:
方法一:自动注入路由参数到组件属性
在组件类中声明与路由参数同名的公共属性,Volt会自动将路由参数的值赋值给该属性,无需额外处理:
new #[Layout('layouts.app')] class extends Component { public string $name = ''; public int $categoryId; // 声明与路由参数同名的公共属性 public function createTopic(): void { $validated = $this->validate([ 'name' => ['required', 'string', 'min:6', 'max:255'] ]); $topic = ForumTopicModel::create([ 'name' => $validated['name'], 'category' => $this->categoryId, // 使用注入后的属性值 'author' => Auth::id() ]); } }
方法二:通过Livewire的route()方法直接获取
如果不想声明额外属性,可以在需要使用参数的位置,直接调用Livewire提供的route()方法获取指定参数:
new #[Layout('layouts.app')] class extends Component { public string $name = ''; public function createTopic(): void { $validated = $this->validate([ 'name' => ['required', 'string', 'min:6', 'max:255'] ]); $topic = ForumTopicModel::create([ 'name' => $validated['name'], 'category' => $this->route('categoryId'), // 直接获取路由参数 'author' => Auth::id() ]); } }
注意事项
- 如果路由参数是整数类型,建议在组件属性中声明
int类型(如方法一中的public int $categoryId),确保类型安全。 - 两种方法都无需手动解析请求或路由对象,Volt/Livewire已封装好参数传递逻辑。
内容的提问来源于stack exchange,提问作者ANDREW_FROST
相关产品推荐
相关产品推荐

