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

如何在Laravel控制器中生成带正确URL的按钮并传递到视图

问题原因

{{ }} 是 Blade 模板的专属解析语法,仅在 .blade.php 后缀的视图文件中会被框架解析执行,你在控制器中直接返回的 HTML 字符串不会经过 Blade 解析,所以语法标签会被当成普通 URL 片段进行编码输出,最终生成错误的访问地址。

解决方案

方法1:控制器内直接拼接URL

直接在控制器中调用 url() 辅助函数生成地址,拼接进 HTML 字符串即可:

function sendbutton (){
  $order = 1;
  return '<a href="'. url("user/order/getOrder/" . $order) .'" class="btn btn-primary" style="color:white">Edit Order</a>';
}

注意检查路由路径拼写,你示例中的 geOrder 大概率是 getOrder 的笔误,避免出现404问题。

方法2:使用命名路由route()生成地址

第一步:先给对应路由设置名称

在路由定义文件(通常是 routes/web.php)中给目标路由追加 name 方法设置命名:

// 示例路由,替换为你实际的控制器和方法名
Route::get('/user/order/getOrder/{order}', [OrderController::class, 'getOrder'])->name('edit.order');

第二步:控制器中调用route()生成地址

function sendbutton (){
  $order = 1;
  return '<a href="'. route('edit.order', $order) .'" class="btn btn-primary" style="color:white">Edit Order</a>';
}
最优实践建议

不推荐直接在控制器中拼接 HTML 代码返回,会提高代码耦合度,后期维护成本更高。推荐将按钮渲染逻辑放到 Blade 视图中实现:

  1. 控制器只传递参数到视图:
// 控制器中返回视图并传参
$order = 1;
return view('order.detail', compact('order'));
  1. 在对应的 .blade.php 视图文件中渲染按钮:
<a href="{{ route('edit.order', $order) }}" class="btn btn-primary" style="color:white">Edit Order</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:36:02