Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,064

Как передать экземпляр коллекции через форму?

12.07.2021, 00:25. Показов 892. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Схема такая: В представлении есть коллекция, из которой я хочу часть объектов передать массивом(реализация - через выпадающий спикок в форме) в контроллер.

модель имеет свойства: id, user_id, path.

Я вижу, что мне приходит не массив коллекций, а массив строк. Я в запросе формы на этапе предвалидации обхожу массив и делаю json_decode. Получаю это не в виде экземпляров коллекции, но все равно это лучше, чем в виде строки. Далее массив стандартных объектов уже передаю в контроллер. Оно все конечно работает - но выглядит как конкретный костыль. Может есть какой-то более адекватный способ?

Для чего нужно: В форме пользователь выбирает картинки чекбоксами для удаления. В контроллере я хочу получать id для удаления этих картинок из БД, и путь для удалаения из хранилища файлов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2021, 00:25
Ответы с готовыми решениями:

Как передать форму (доступ к контролам) в класс, не создавая ее экземпляр?
вопрос в название темы,спасибо!

Как передать во вторую форму, указатель на элемент коллекции
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

как передать через строку Url значение на форму
помогие советом

4
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.07.2021, 06:31
Цитата Сообщение от СергейСереб Посмотреть сообщение
Я вижу, что мне приходит не массив коллекций, а массив строк
Еще бы.
Цитата Сообщение от СергейСереб Посмотреть сообщение
Оно все конечно работает - но выглядит как конкретный костыль
К тому же это небезопасно. Нельзя доверять данным, пришедшим от клиента: их нужно валидировать.
Цитата Сообщение от СергейСереб Посмотреть сообщение
В форме пользователь выбирает картинки чекбоксами для удаления. В контроллере я хочу получать id для удаления этих картинок из БД, и путь для удалаения из хранилища файлов.
Это делается так:
1) В атрибуте value checkbox'ов указываете ID (только его) записи.
2) После отправки формы в PHP-скрипте получаете массив с выбранными ID.
3) Из БД по выбранным ID получаете пути для удаления изображений из хранилища файлов.
4) Удаляете изображения и выполняете запрос на удаление записей с выбранными ID.
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,064
12.07.2021, 11:18  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение

К тому же это небезопасно. Нельзя доверять данным, пришедших от клиента: их нужно валидировать.
Так я и делал валидацию в формреквесте после преобразования полученных строк в объекты.
Это делается так:
1) В атрибуте value checkbox'ов указываете ID (только его) записи.
2) После отправки формы в PHP-скрипте получаете массив с выбранными ID.
3) Из БД по выбранным ID получаете пути для удаления изображений из хранилища файлов.
4) Удаляете изображения и выполняете запрос на удаление записей с выбранными ID.
В общем то, я изначально так и сделал. Но меня начало смущать, что у меня в форме уже была коллекция экземпляров из бд, а отправив данные на бэк, я опять иду в бд за моделями для удаления.
Хотел сэкономить на работе с бд.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.07.2021, 11:42
Цитата Сообщение от СергейСереб Посмотреть сообщение
Так я и делал валидацию в формреквесте после преобразования полученных строк в объекты.
Как валидировали?
Что, если злоумышленник укажет вместо пути к изображению путь к какому-то PHP-файлу? Ваш скрипт удалит PHP-файл (если права доступа позволят). Или укажет путь на изображение другого человека; как вы определите, что картинка принадлежит именно этому аккаунту?
Придётся к БД обращаться, опять же.
Цитата Сообщение от СергейСереб Посмотреть сообщение
Хотел сэкономить на работе с бд.
Это не тот случай.
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,064
12.07.2021, 13:20  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Как валидировали?
Да, с валидацией не все хорошо сложилось. В виде объектов- проблемно. Если строку преобразовать в массив и передавать объекты как вложенные массивы, то в контексте валидации можно в методе rules() обращаться к массиву картинки в массиве картинок на удаление по ключу "path" и проверять, есть ли такое значение в бд.

В общем, оба варианта работают, я проверил. Но таки остановился на работе с id, без передачи объектов через форму. Это значительно усложняет код, и одно обращение в бд того не стоит, я так думаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2021, 13:20
Помогаю со студенческими работами здесь

Как через форму передать текст на другую страницу?
Интересует метод, который будет использовать сессии. Форма уже есть, переменная, которая отправляется - $name Как сохранять ее в...

Как передать полный текст в форму через cURL
Как передать полный текст в форму через cURL? Проблема в том что пропадает текст после знака & Например: передаю текст ...

Передать экземпляр класса через его предок
Имеются классы: public class Data { public string Name {get; set;} } public class EmailData : Data {

Как передать текст в label через другой класс ( форму )?
На форме размещена панель на ней лежит label.text. При нажатие на кнопку я хочу чтобы передавался нужный текст, как такое реализовать? ...

Как передать POST параметр через форму, если обработчик не принимает его
Допустим есть форма, и в ней есть radio, необходимо передать параметр radio в массив, который уже передается в файл обработчик ( action в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Линейное решение нелинейной задачи. Формулы от LM по моему решению пока не проверял. В итоговой её формуле видно её заблуждение.
Hrethgir 10.04.2025
В продолжение Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2. 5-14b-instruct . . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
Реализации таймеров в Unity
GameUnited 09.04.2025
Время — важный ресурс любой игры. Разработка качественных игровых механик невозможна без грамотного управления временем, а таймеры выступают ключевым инструментом этого управления. Представьте себе. . .
Функции высшего порядка в JavaScript
run.dev 09.04.2025
Функции высшего порядка представляют собой один из фундаментальных камней функционального программирования в JavaScript. По сути, это функции, которые либо принимают другие функции в качестве. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер