Комментарии 23
и сдохни пытаясь это дело причесать под дизайн…
Отчего же? Правь шаблон формы и стили — причесывай, не хочу. Также можно задать кастомный шаблон, если не хотите вносить изменения глобально.
а можно пример шаблона?
Да, конечно.
Пример шаблона
Пример шаблона
В общем ничего нового, причем имхо не самая удачная реализация — у меня (и во многих нормальных ФВ) — Template pattern = формы это контейнеры, контейнеры могут включать в себя элементы (в т.ч. и контейнеры), форма сама является элементом. Элемент имеет HTML представление. В итоге все что у вас + в отображении вы ничем не ограничены — от тупого представление формы echo form на прототипе но на этапе наведения блеска
Если не трудно — приведите пример, для наглядности.
чего именно? работы с формой?
контроллер:
шаблон (функциональный прототип) — юзаю PHPTAL но сути не меняет
через пару дней :)
через неделю:
форма примерно:
контроллер:
$form = new my_form($request, $instance);
if ($request->isPost() && $form->validate())
{
$instance->save();
/// redirect
}
$this->renderTemplate('template', get_defined_vars());
шаблон (функциональный прототип) — юзаю PHPTAL но сути не меняет
${form}
через пару дней :)
${form/getOpen}
${form/login}
${form/getClose}
через неделю:
${form/getOpen}
login: <input name="login" value="${form/login/getValue}" />
${form/getClose}
форма примерно:
class my_form extends form {
protected init()
{
$this->addRequired($this->add(new field('login', 'Login')));
}
protected validateLogin($value)
{
if ($value === 'god') throw new validation_exception('Reserved login');
}
}
статью надо дополнить работой с дизайном. иначе будет много вопросов.
НЛО прилетело и опубликовало эту надпись здесь
Я разобрался, и мне понравилась идея реализации, вот только с полями radio я не разобрался, как их делать, так как в движке пока они не реализованы и некуда посмотреть, что бы сделать по аналогии.
В отношении работы с формами, мне понравился подход ASP.NET MVC: правила валидации прописываются в самой модели, а форма — это лишь форма — набор инпутов, для конвертации пользовательского ввода в объект модели (или задания отдельных свойств модели)… т.е. главной фишкой является дата-биндер, который собственно и занимается биндингом данных в объект. После этого вступает уже механизм валидации модели… Это очень удобно, т.к. правила валидации прописываются один раз, и именно там где им и место… и валидация не обязательно связана с конкретной формой. Что касается рендеринга формы, здесь уже вам карты в руки, хотите руками, хотите хелперы пишите… Реализацию такого подхода на ПХП пока не встречал, а у самого пока руки не доходят.
Правильно ли я понимаю, что для изменения порядка следования полей, их имен и пр. придется менять контроллер, а не шаблон? Т.е. это забота программиста, а не дизайнера?
Так же контроллер занимается валидацией входящих данных, значит если мы в нескольких местах работаем с профилем пользователя, то столько же раз придется задавать правила валидации?
Так же контроллер занимается валидацией входящих данных, значит если мы в нескольких местах работаем с профилем пользователя, то столько же раз придется задавать правила валидации?
Шаблон задается единожды. Работа дизайнера сводится к минимуму.
Валидацией занимается отдельный класс CodeIgniter.
Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?), тогда да, вам нужно будет выстроить форму по-новой, потратив пару минут.
Формы могут быть переопределены извне через хуки.
Валидацией занимается отдельный класс CodeIgniter.
Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?), тогда да, вам нужно будет выстроить форму по-новой, потратив пару минут.
Формы могут быть переопределены извне через хуки.
>Шаблон задается единожды. Работа дизайнера сводится к минимуму.
Скорее, работа дизайнера перекладывается на программиста.
>Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?)
Вот например, форма регистрации, и форма редактирования профиля. Это не одна и та же форма, но данные, по сути — одни и те же. И та, и другая заносят данные в таблицу users, так зачем мне писать два разных валидатора, если можно поручить валидацию данных модели. Пусть она занимается обработкой данных, это ее задача, а не задача контроллера.
>Формы могут быть переопределены извне через хуки.
И это для того, чтобы сменить порядок следования полей?
Скорее, работа дизайнера перекладывается на программиста.
>Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?)
Вот например, форма регистрации, и форма редактирования профиля. Это не одна и та же форма, но данные, по сути — одни и те же. И та, и другая заносят данные в таблицу users, так зачем мне писать два разных валидатора, если можно поручить валидацию данных модели. Пусть она занимается обработкой данных, это ее задача, а не задача контроллера.
>Формы могут быть переопределены извне через хуки.
И это для того, чтобы сменить порядок следования полей?
1. Программист просто определяет порядок и настройки полей.
2. Форма регистрации по логике отличается от редактирования профиля. Явного класса валидатора не присутствует, вы просто указываете желаемые настройки в опциях поля, а движок сам уже делает всю работу.
3. Это для того, чтобы из других компонентов движке вносить любые изменения в форму. С учетом того, что любые компоненты отключаются/подключаются в один клик в админке — очень полезная особенность.
2. Форма регистрации по логике отличается от редактирования профиля. Явного класса валидатора не присутствует, вы просто указываете желаемые настройки в опциях поля, а движок сам уже делает всю работу.
3. Это для того, чтобы из других компонентов движке вносить любые изменения в форму. С учетом того, что любые компоненты отключаются/подключаются в один клик в админке — очень полезная особенность.
Давно хотел спросить, почему mootools, а не jquery?
Вы уже спрашивали раньше :-)
Так сложилось, что с MooTools познакомился раньше и начал работу именно с нее.
jQuery мне тоже очень по-душе, и я скорее всего буду использовать ее в следующей мажорной версии движка. Менять коней на переправе смысла нет.
Так сложилось, что с MooTools познакомился раньше и начал работу именно с нее.
jQuery мне тоже очень по-душе, и я скорее всего буду использовать ее в следующей мажорной версии движка. Менять коней на переправе смысла нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Работа с формами