Решил вопрос с HTML-формами
В субботу вернулся к работе над движком нового сообщества. С названием пока всё плохо, поэтому пока буду называть его MLCE (MindLife Community Engine) — по названию самого сообщества, которое хочу создать. Долго думал, за что взяться, и в итоге занялся одной из самых неинтересных частей — работой с формами. Впервые о том, чтобы автоматизировать работу с ними, я задумывался ещё 10 лет назад, когда сделал Yaml Form Generator. Всегда хотелось сдлеать так, чтобы поля, значения по умолчанию для них и правила валидации прописывались только в одном месте. Но получалось либо не гибко (как в Yaml Generator), либо недостаточно эффективно, как в IntB, где для HTML-части полей приходилось подключать макросы из шаблонизатора, а для checkboxов делать проверки if (!empty($_POST['что-то-там'])).
Теперь же сделал отдельный класс для формы и отдельные классы для каждого вида полей, причём класс сразу умеет выводить себя через __toString(). А класс формы просто получает массив полей на входе и делает по нему итерацию, когда надо + содержит метод printField для быстрого вывода поля с нужным именем. Правда, после некоторых размышлений отказался от «обвязки» — автоматическог вывода label с описанием, решив оставить его в шаблоне для большей гибкости. Но до сих пор не уверен, правильно ли сделал. А ещё сделал так, что заполнение формы происходит единообразно хоть данными из базы, хоть данными из формы.
Ещё собирался сверстать главную страницу сообщества, но вот тут пока не продвинулся. Отчасти из-за того, что сегодня спал плохо, встал невсыпавшийся, и утром ничего не хотелось делать совершенно.
Теперь же сделал отдельный класс для формы и отдельные классы для каждого вида полей, причём класс сразу умеет выводить себя через __toString(). А класс формы просто получает массив полей на входе и делает по нему итерацию, когда надо + содержит метод printField для быстрого вывода поля с нужным именем. Правда, после некоторых размышлений отказался от «обвязки» — автоматическог вывода label с описанием, решив оставить его в шаблоне для большей гибкости. Но до сих пор не уверен, правильно ли сделал. А ещё сделал так, что заполнение формы происходит единообразно хоть данными из базы, хоть данными из формы.
Ещё собирался сверстать главную страницу сообщества, но вот тут пока не продвинулся. Отчасти из-за того, что сегодня спал плохо, встал невсыпавшийся, и утром ничего не хотелось делать совершенно.