具有多个提交按钮或多个表单的表单

时间:2019-03-05 18:51:28

标签: php

我有一个文章列表,并为所有文章添加了一个提交按钮。

事实上,当我在控制器中时,我无法隐藏好输入,因为它将接受最后一个输入。

<form method="POST" action="{{url('/deleteArticle')}}">
@foreach($articles as $a)
        {{ csrf_field() }}

    <div class="test">
                <div class="name"><?= $a['name_a'] ?></div>
        <input type="hidden" name="id" id="ida" value='<?= $a['id_a'] ?>'/>
        <input type="submit" class="del" id="delA" class="cross" name="id">X</input>
    </div>
@endforeach
</form>

我不是用JavaScript来解决问题,而是考虑循环我的文章并使每个文章都有一种形式。

这是一种不好的做法吗?我应该使用一个表格,并按文章提交一个按钮吗?此提交按钮的值不能为“ X”,而只能是我要删除的文章的ID,这对显示不利。

2 个答案:

答案 0 :(得分:2)

使用html元素按钮:<button value="id_of_your_current_article">Delete article</button>

然后使用简单的Javascript完成这项工作。

答案 1 :(得分:2)

您不必为每篇文章都使用单独的表单,也不需要隐藏的输入,也不需要JavaScript。只需使用按钮代替其他建议的输入即可。如果这些按钮中的任何一个都被单击,将提交表单,而$_POST['id']将具有被单击的按钮的值。

<button><input>不同,因为它不是自动关闭标签。对于<input>,该值为按钮文本。但是使用<button>,您可以给它一个值,然后将想要的文本放在标签之间。

这是一个基于您的代码的示例。

<form method="POST" action="{{url('/deleteArticle')}}">
   {{ csrf_field() }}
   @foreach($articles as $a)
      <div class="test">
         <div class="name"><?= $a['name_a'] ?></div>
         <button type="submit" class="del cross" name="id" value='<?= $a['id_a'] ?>' >X</button>
      </div>
   @endforeach
</form>

与问题无关,我还修复了重复的csrf_field并合并了按钮上的两个类。