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

如何在URL中传递变量?Laravel Blade编辑链接故障求助

解决Laravel Blade中编辑链接无法生效的问题

看起来你遇到的核心问题是Blade模板语法没有被正确解析——因为你用单引号把整个HTML代码包裹起来了,在PHP/Blade环境里,单引号内的内容会被当作纯文本,里面的{{ $patient->id }}不会被替换成实际的患者ID,最终生成的链接是patients/{{ $patient->id }}/edit这种无效路径,自然无法正常跳转。

下面给你几种可行的解决方法,按推荐程度排序:

方法1:直接在Blade中编写原生HTML(最推荐)

去掉包裹的单引号,直接在Blade模板里写这段代码,让Blade引擎正常解析变量:

<td class="text-center"><a href="{{ url('patients/' . $patient->id . '/edit') }}">Edit</a></td>

如果你的路由有命名路由(比如在web.php里定义了Route::get('/patients/{patient}/edit', [PatientController::class, 'edit'])->name('patients.edit')),更推荐用route()辅助函数,这样更灵活,也能避免硬编码路径:

<td class="text-center"><a href="{{ route('patients.edit', $patient->id) }}">Edit</a></td>
<!-- 进阶写法:直接传整个患者模型,Laravel会自动提取ID -->
<td class="text-center"><a href="{{ route('patients.edit', $patient) }}">Edit</a></td>

方法2:如果必须在PHP代码块中输出

如果你是在@php...@endphp代码块里输出这段HTML,需要改用双引号包裹(双引号支持变量插值),或者手动拼接变量:

@php
// 方式1:双引号插值解析变量
echo "<td class='text-center'><a href='patients/{$patient->id}/edit'>Edit</a></td>";

// 方式2:用url辅助函数拼接,路径更可靠
echo "<td class='text-center'><a href='" . url('patients/' . $patient->id . '/edit') . "'>Edit</a></td>";
@endphp

为什么单引号不行?

在PHP中,单引号字符串属于字面量字符串,里面的变量和特殊语法不会被解析。所以你用单引号包裹后,{{ $patient->id }}会原封不动地输出到HTML里,浏览器会把这个当作链接的一部分,自然无法跳转到正确的编辑页面。

内容的提问来源于stack exchange,提问作者R. Mseti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:28:57