Показать сообщение отдельно
  #27 (permalink)  
Старый 04.05.2017, 12:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Scantraxx
не хочет он так приниматься, возможно потому, что я на в ходе в контроллер принимаю модель, а не коллекцию
А вы в любом случае отправляет коллекцию, которая описывается согласно типу отправляемых данных enctype, который в вашем случае должен быть multipart/form-data. Серверный язык получая эти сырые данные (RAW) поступает так как ему предписано.

Например в РНР я могу сам разбирать RAW данные, но проще использовать готовое, которое обеспечивается языком - в нем данные формы попадут в массив $_POST (отправка файлов только методом POST), а информация о загруженных файлах в массив $_FILES.

При этом парсер будет поступать так - если к примеру отправляется три поля формы с именами "а", то в массиве окажется только одно значение, последнего поля. И это логично - массив не может иметь одинаковых индексов/ключей, а предписанием парсеру получить все поля является указание принадлежности имен к массиву "а[], "а[]", "а[]". В этом случае парсер автоматически поместит значения полей в массив "а" соответственно под индексами 0, 1, 2. То есть указывать жестко индексы в именовании не требуется.

Такое именование позволяет получать на сервере вложения элементов формы (группировка) определяемые разработчиком самой формой, то есть многомерные массивы. А необязательность указания индекса позволяет легче оперировать элементами на клиенте, например тогда, когда серверу необходима последовательность индексов от 0 до ... К примеру с вашей жесткой индексацией при удалении произвольных индексов (полей) как поведет себя контроллер?

Исходя из этого условия в среде РНР нельзя именовать выпадающий список со множественным выбором не указывая его имя как "name[]", иначе разработчик получит значение только последней выбранной в списке опции.

Похоже этим же условием руководствуется и ваш контроллер. Проверьте не будет ли ошибок с такими полями:
<input name="detail[3].details_name" type="text" />
<input name="detail[3].details_value" type="text" />
 
<input name="detail[8].details_name" type="text" />
<input name="detail[8].details_value" type="text" />


У вас нужно добавлять и удалять по паре полей, и реальный код такого удаления будет сильно зависеть от html-структуры. Надо сначала с этим определиться, можно конечно и так поступить:

<input name="detail[0].details_name" type="text" />
<input name="detail[0].details_value" type="text" />

<input type="button" value="Удалить" />

<input name="detail[1].details_name" type="text" />
<input name="detail[1].details_value" type="text" />

<input type="button" value="Удалить" />


Но такая структура не удобна ведь с точки зрения информативности. Тут либо каждые два поля + кнопка удаления в одну линию, либо вложенные в родительский элемент имеющий визуальные границы. Подумайте сначала над этим.

Сообщение от Scantraxx
вес, цвет, углы различные и т.д.
Походу получается, что ваша таблица характеристик будет страдать избыточностью.

Последний раз редактировалось laimas, 04.05.2017 в 13:11.
Ответить с цитированием