【问题标题】:Laravel: How to make a form with one action for each buttonLaravel:如何为每个按钮制作一个带有一个动作的表单
【发布时间】:2017-08-18 09:45:42
【问题描述】:

我有一个表格:

<form action="caption/{{$caption->id}}" method="delete">
    <p value='{{$caption->id}}'>{{$caption->content}}</p>
    <button type="submit">Delete caption</button>
    <button type="submit" formaction="<SEND A PUT TO CAPTION/CAPTION_ID>">Accept caption</button>
</form> 

此表单处理我网站上未经批准的图片标题的删除或批准。我已经设置了表单,以便在按下Delete button 时将DELETE 发送到caption/caption_id

现在,按下Accept caption 按钮后,我希望将$caption-&gt;approved 字段设置为1(默认为0)。我已经想过如何做到这一点,我提出的解决方案(我不知道如何实现)是这样的:

按下接受时,使网站向caption/caption_id 发送POST 请求。 POST 然后由路由处理,路由将其发送到控制器,在那里我可以做我需要做的事情。

问题:

  1. 如何实施此解决方案?
  2. 如果我的解决方案不切实际或愚蠢,有什么更好的解决方案?

谢谢

【问题讨论】:

  • 没有什么叫做formaction,你需要使用javascript来控制你的DOM元素;
  • 你能解释一下吗?
  • 您对 javascript 有一定的了解吗?你用 jquery 吗?
  • 对js的公平认识。我对 jquery 一无所知。
  • 你的脚本是否包含 jquery 源代码?

标签: php html laravel


【解决方案1】:

您不能使用两个按钮发送请求,每个按钮都在一个带有所需目标操作和方法的表单中吗?

{{ $caption->content }}
<form action="caption/{{ $caption->id }}" method="POST">
    <button type="submit">Approve</button>
</form>
<form action="caption/{{ $caption->id }}" method="POST">
    <input name="_method" type="hidden" value="DELETE"/>
    <button type="submit">Reject</button>
</form>

这种方法意味着您不需要使用 JavaScript。

【讨论】:

  • 是的,我什至没有想到这一点。谢谢!
  • 你确定它对你有用吗? :) laravel.com/docs/5.4/routing#form-method-spoofing !!据我所知,DELETE 方法不适用于 html 表单! HTML forms do not support PUT, PATCH or DELETE actions. ......
  • 感谢您指出这一点,@hassan - 我已经更新了答案。
猜你喜欢
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2021-07-19
相关资源
最近更新 更多