Laravel 5-具有相同名称但保持顺序的多个表单输入


Laravel 5 - Multiple form inputs with the same name but keeping the order

使用L5和我当前的设置创建博客系统已经准备好了,除了保存博客文章。

我有两个按钮。一个创建文本区域输入,另一个创建文件上传界面。

本质上,在创建了一篇博客文章后,我留下了这样的结构:

<form>
    <textarea name="text-update">foo</textarea>
    <textarea name="text-update">foo</textarea>
    <textarea name="text-update">foo</textarea>
    <textarea name="text-update">foo</textarea>
    <input type="hidden" value="an image url"/>
    <input type="hidden" value="an image url"/>
    <textarea name="text-update">foo</textarea>
</form>

理想情况下,我希望能够去:

public function store()
{
    foreach (INPUTS AS INPUT) {
        add new row to database with the content and also the type of input.
    }
}

目的是,我没有一个博客,而是有博客部分,将属于一篇博客文章。

如果这是不可能的,那么我只需要增加输入的名称并找出一些东西。

编辑:当您将元素添加到DOM时,您可以定义带有id的数组键来保留数组顺序。

您可以通过在名称末尾添加[]使输入成为一个数组:

<form>
    <textarea name="text-update[1]">foo</textarea>
    <textarea name="text-update[2]">foo</textarea>
    <textarea name="text-update[3]">foo</textarea>
    <textarea name="text-update[4]">foo</textarea>
    <input type="hidden" name="image[1]" value="an image url"/>
    <input type="hidden" name="image[2]" value="an image url"/>
    <textarea name="text-update[5]">foo</textarea>
</form>

这将把所有值放在一个数组中,您可以在上迭代

foreach (Request::get('text-update') as $update) {
    //add new row to database with the content and also the type of input.
}
foreach (Request::get('image') as $update) {
    //add new row to database with the content and also the type of input.
}

这样设置字段:

<textarea name="text-update[]">foo</textarea>

使用方括号将获取所有文本字段,并将它们分组到一个数组中,然后可以对其进行迭代。您还需要对隐藏字段执行同样的操作。请确保在名称中使用[],如下所示:

<input type="hidden" name="somename[]" value="an image url"/>