PHP Laravel + Twig 框架下如何给form_ajax方法传递$id参数
实现方法
你可以根据你的路由配置选择以下两种方案:
方案1:适配现有后端函数(通过URL路由参数传id)
你当前的后端函数已经定义了$id作为入参,只需要两步配置即可:
- 先确保AJAX对应的路由定义包含id占位符,示例:
Route::post('/item/approve/{id}', [对应控制器类名::class, 'onItemApprove']);
- Twig模板中调用
form_ajax时指定带id的请求地址,假设你的模板中已经有存储目标id的变量(比如item.id),写法如下:
{{ form_ajax('onItemApprove', { url: '/item/approve/' ~ item.id }) }}
这个方案不需要修改你现有的后端处理逻辑,id会自动通过路由参数注入到$id参数中。
方案2:通过POST请求体传id(无需调整路由)
如果你不想修改路由配置,可以把id放在POST数据中传递,需要同步修改后端函数:
- Twig模板写法有两种可选:
- 直接通过
data参数传递:
{{ form_ajax('onItemApprove', { data: { id: item.id } }) }}
- 或者在表单内增加隐藏输入框:
{{ form_ajax('onItemApprove') }} <input type="hidden" name="id" value="{{ item.id }}"> <!-- 其他表单元素 --> {{ form_close() }}
- 调整后端函数从POST数据中获取id:
function onItemApprove(){ $id = post('id'); $data = post(); $item = Spot\Shipment\Models\Item::find($id); // 原有逻辑 $item->update(); }
内容的提问来源于stack exchange,提问作者Abdelrahman Farag
相关产品推荐
相关产品推荐

