HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Обновление - самое сложное действие из всех по объему действий. С точки зрения кода новое здесь только одно - заполнение сущности данными формы: $school['name'] = $data['name'];. Этот процесс сильно изменится при использовании ORM, а пока мы будем проставлять каждое значение руками.</p>
1 <p>Обновление - самое сложное действие из всех по объему действий. С точки зрения кода новое здесь только одно - заполнение сущности данными формы: $school['name'] = $data['name'];. Этот процесс сильно изменится при использовании ORM, а пока мы будем проставлять каждое значение руками.</p>
2 <p><strong>Обработчик формы</strong></p>
2 <p><strong>Обработчик формы</strong></p>
3 <p><strong>Шаблон</strong></p>
3 <p><strong>Шаблон</strong></p>
4 <p><strong>Обработчик действия</strong></p>
4 <p><strong>Обработчик действия</strong></p>
5 <p>Теоретически можно сделать и так: $school = array_merge($school, $data). Но у этого подхода есть один недостаток. Такой способ не безопасен, так как пользователь может послать данные в обход формы, например, количество денег на счету и array_merge() изменит их значение. Эту проблему решают те же пакеты, которые предоставляют Form Builder, и они сразу встроены во фреймворки.</p>
5 <p>Теоретически можно сделать и так: $school = array_merge($school, $data). Но у этого подхода есть один недостаток. Такой способ не безопасен, так как пользователь может послать данные в обход формы, например, количество денег на счету и array_merge() изменит их значение. Эту проблему решают те же пакеты, которые предоставляют Form Builder, и они сразу встроены во фреймворки.</p>
6 <h2>Методы</h2>
6 <h2>Методы</h2>
7 <p>HTML позволяет указывать только два метода внутри атрибута method тега &lt;form&gt;. С точки зрения семантики HTTP, это не совсем верно.</p>
7 <p>HTML позволяет указывать только два метода внутри атрибута method тега &lt;form&gt;. С точки зрения семантики HTTP, это не совсем верно.</p>
8 <p><em>POST</em>предназначен для создания нового. Для изменения правильно использовать<em>PATCH</em>или<em>PUT</em>. Выбор зависит от того, как происходит обновление. Для удаления используется<em>DELETE</em>.</p>
8 <p><em>POST</em>предназначен для создания нового. Для изменения правильно использовать<em>PATCH</em>или<em>PUT</em>. Выбор зависит от того, как происходит обновление. Для удаления используется<em>DELETE</em>.</p>
9 <p>Если посмотреть на определение обработчика выше, то можно увидеть использование<em>PATCH</em>. Но как это работает? Браузер все равно пошлет<em>POST</em>.</p>
9 <p>Если посмотреть на определение обработчика выше, то можно увидеть использование<em>PATCH</em>. Но как это работает? Браузер все равно пошлет<em>POST</em>.</p>
10 <p>Большинство фреймворков использует один и тот же механизм для обхода этого ограничения.</p>
10 <p>Большинство фреймворков использует один и тот же механизм для обхода этого ограничения.</p>
11 <p>Если форма не поисковая, то данные в любом случае нужно отправлять<em>POST</em>-запросом. Но в форму добавляется специальное скрытое поле с именем _METHOD, которое и говорит фреймворку, какой метод мы бы хотели использовать:</p>
11 <p>Если форма не поисковая, то данные в любом случае нужно отправлять<em>POST</em>-запросом. Но в форму добавляется специальное скрытое поле с именем _METHOD, которое и говорит фреймворку, какой метод мы бы хотели использовать:</p>
12 <p>Кроме этого нужно включить поддержку переопределения метода в самом Slim:</p>
12 <p>Кроме этого нужно включить поддержку переопределения метода в самом Slim:</p>
13  
13