39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,064
|
|
Как передать экземпляр коллекции через форму?12.07.2021, 00:25. Показов 892. Ответов 4
Метки нет Все метки)
(
Схема такая: В представлении есть коллекция, из которой я хочу часть объектов передать массивом(реализация - через выпадающий спикок в форме) в контроллер.
модель имеет свойства: id, user_id, path. Я вижу, что мне приходит не массив коллекций, а массив строк. Я в запросе формы на этапе предвалидации обхожу массив и делаю json_decode. Получаю это не в виде экземпляров коллекции, но все равно это лучше, чем в виде строки. Далее массив стандартных объектов уже передаю в контроллер. Оно все конечно работает - но выглядит как конкретный костыль. Может есть какой-то более адекватный способ? Для чего нужно: В форме пользователь выбирает картинки чекбоксами для удаления. В контроллере я хочу получать id для удаления этих картинок из БД, и путь для удалаения из хранилища файлов.
0
|
12.07.2021, 00:25 | |
Ответы с готовыми решениями:
4
Как передать форму (доступ к контролам) в класс, не создавая ее экземпляр? Как передать во вторую форму, указатель на элемент коллекции как передать через строку Url значение на форму |
![]() 5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|
12.07.2021, 06:31 | |
Еще бы.
К тому же это небезопасно. Нельзя доверять данным, пришедшим от клиента: их нужно валидировать. Это делается так: 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 [ТС] | |
Так я и делал валидацию в формреквесте после преобразования полученных строк в объекты.
Хотел сэкономить на работе с бд.
0
|
![]() 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 [ТС] | |
Да, с валидацией не все хорошо сложилось. В виде объектов- проблемно. Если строку преобразовать в массив и передавать объекты как вложенные массивы, то в контексте валидации можно в методе rules() обращаться к массиву картинки в массиве картинок на удаление по ключу "path" и проверять, есть ли такое значение в бд.
В общем, оба варианта работают, я проверил. Но таки остановился на работе с id, без передачи объектов через форму. Это значительно усложняет код, и одно обращение в бд того не стоит, я так думаю
0
|
12.07.2021, 13:20 | ||||||
Помогаю со студенческими работами здесь
5
Как через форму передать текст на другую страницу? Как передать полный текст в форму через cURL Передать экземпляр класса через его предок
Как передать POST параметр через форму, если обработчик не принимает его Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Линейное решение нелинейной задачи. Формулы от 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. По сути, это функции, которые либо принимают другие функции в качестве. . .
|