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

时间:2015-11-12 22:01:28

标签: php laravel-5

使用L5制作博客系统,我目前的设置已准备就绪,除了保存博客帖子。

我有2个按钮。一个创建textarea输入,另一个创建文件上传界面。

基本上,在创建博客文章后,我留下了如下结构:

<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.
    }
}

目标是,我不是拥有一个博客,而是拥有属于博客文章的博客部分。

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

2 个答案:

答案 0 :(得分:5)

编辑:向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.
}

答案 1 :(得分:1)

将您的字段设置为:

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

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

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