You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire中如何传递含字符串字面量的ID参数?

问题解决:Livewire组件wire:click传递字符串ID参数报错

错误原因分析

你遇到的错误信息:

livewire.js?id=44144c23:1123 Alpine Expression Error: Unexpected token '>'
Expression: "$wire.markAsRead($notification->id)"

原按钮代码存在两个核心问题:

  1. wire:click属性未闭合双引号,这是触发语法错误的直接原因;
  2. 当$notification->id为字符串类型时,直接传递变量会导致Livewire解析异常。

你尝试的wire:click="markAsRead('$notification->id')"写法无效,是因为Blade在双引号属性内不会解析单引号包裹的变量,最终传递的是字面量字符串$notification->id而非实际ID值。

正确传递参数的写法

方法1:Blade直接解析变量(推荐)

利用Blade的echo语法直接将ID值注入到方法参数中,Livewire会自动识别参数类型:

wire:click="markAsRead({{ $notification->id }})"

方法2:明确指定字符串类型

如果需要明确传递字符串参数,用单引号包裹解析后的ID值即可:

wire:click="markAsRead('{{ $notification->id }}')"

方法3:使用@this语法

通过@this调用组件方法,同样确保变量被正确解析:

wire:click="@this.markAsRead('{{ $notification->id }}')"

组件方法验证

同时确认你的Livewire组件中的markAsRead方法能正确接收参数,示例代码:

public function markAsRead($notificationId)
{
    // 实现标记通知为已读的逻辑
    auth()->user()->notifications()->find($notificationId)->markAsRead();
}

Laravel的Eloquent支持字符串类型的ID查询,无需额外进行类型转换。

内容的提问来源于stack exchange,提问作者mstdmstd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:52:37