Laravel 5 - множественные формы ввода с одинаковым именем, но с сохранением порядка

1

Создание системы ведения блога с использованием L5 и моей текущей настройки полностью готово, за исключением сохранения сообщений в блоге.

У меня есть две кнопки. Один создает вход в 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.
    }
}

Цель состоит в том, что вместо того, чтобы иметь один блог, у меня вместо этого есть разделы блога, которые будут принадлежать блогу.

Если это невозможно, то мне просто нужно увеличивать имена входов и выдумывать что-то.

Теги:
laravel-5

2 ответа

4

Редактирование. Когда вы добавляете элемент в DOM, вы можете определить ключ массива с идентификатором, чтобы сохранить порядок массива.

Вы можете сделать входы массивом, добавив [] в конец имени:

<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.
}
  • 0
    Изначально думал, что, но хочу, чтобы содержание в порядке. Так что я могу вытащить разделы блога в порядке их создания. Делая это в массиве, я теряю порядок.
  • 1
    Вы можете установить идентификатор, когда вставляете текстовую область в DOM, чтобы сохранить порядок. Я отредактировал свой ответ на примере.
1

Установите свои поля следующим образом:

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

используя скобки, они будут принимать все текстовые поля и группировать их в массив, который затем можно перебрать. Вам также нужно будет сделать то же самое со скрытыми полями. Убедитесь, что вы используете [] в названии так:

<input type="hidden" name="somename[]" value="an image url"/>
  • 0
    Изначально думал, что, но хочу, чтобы содержание в порядке. Так что я могу вытащить разделы блога в порядке их создания. Делая это в массиве, я теряю порядок.
  • 0
    Это прекрасно работает с Laravel. :-) Он даже не меняет входные имена, но добавляет ассоциативный массив с полями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню