我有一个文章列表,并为所有文章添加了一个提交按钮。
事实上,当我在控制器中时,我无法隐藏好输入,因为它将接受最后一个输入。
<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,这对显示不利。
答案 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并合并了按钮上的两个类。