Pull to refresh

Comments 23

и сдохни пытаясь это дело причесать под дизайн…
Отчего же? Правь шаблон формы и стили — причесывай, не хочу. Также можно задать кастомный шаблон, если не хотите вносить изменения глобально.
а можно пример шаблона?
В общем ничего нового, причем имхо не самая удачная реализация — у меня (и во многих нормальных ФВ) — Template pattern = формы это контейнеры, контейнеры могут включать в себя элементы (в т.ч. и контейнеры), форма сама является элементом. Элемент имеет HTML представление. В итоге все что у вас + в отображении вы ничем не ограничены — от тупого представление формы echo form на прототипе но на этапе наведения блеска
Если не трудно — приведите пример, для наглядности.
чего именно? работы с формой?

контроллер:
$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');
   }
}

Похоже на реализацию в ZendFramework.
Вполне достойная реализация.
да, в общем ничего нового, я так выше и написал, просто немного проще и плюшки
статью надо дополнить работой с дизайном. иначе будет много вопросов.
UFO just landed and posted this here
Надо было просто добить понимание хуков. Посмотрите на suder'a и его напор – он далеко продвинулся в разработке.
Я разобрался, и мне понравилась идея реализации, вот только с полями radio я не разобрался, как их делать, так как в движке пока они не реализованы и некуда посмотреть, что бы сделать по аналогии.
В отношении работы с формами, мне понравился подход ASP.NET MVC: правила валидации прописываются в самой модели, а форма — это лишь форма — набор инпутов, для конвертации пользовательского ввода в объект модели (или задания отдельных свойств модели)… т.е. главной фишкой является дата-биндер, который собственно и занимается биндингом данных в объект. После этого вступает уже механизм валидации модели… Это очень удобно, т.к. правила валидации прописываются один раз, и именно там где им и место… и валидация не обязательно связана с конкретной формой. Что касается рендеринга формы, здесь уже вам карты в руки, хотите руками, хотите хелперы пишите… Реализацию такого подхода на ПХП пока не встречал, а у самого пока руки не доходят.
Правильно ли я понимаю, что для изменения порядка следования полей, их имен и пр. придется менять контроллер, а не шаблон? Т.е. это забота программиста, а не дизайнера?
Так же контроллер занимается валидацией входящих данных, значит если мы в нескольких местах работаем с профилем пользователя, то столько же раз придется задавать правила валидации?
Шаблон задается единожды. Работа дизайнера сводится к минимуму.
Валидацией занимается отдельный класс CodeIgniter.
Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?), тогда да, вам нужно будет выстроить форму по-новой, потратив пару минут.
Формы могут быть переопределены извне через хуки.
>Шаблон задается единожды. Работа дизайнера сводится к минимуму.
Скорее, работа дизайнера перекладывается на программиста.

>Если вам на разных страницах потребуется вывести одну и ту же форму (вопрос — зачем?)
Вот например, форма регистрации, и форма редактирования профиля. Это не одна и та же форма, но данные, по сути — одни и те же. И та, и другая заносят данные в таблицу users, так зачем мне писать два разных валидатора, если можно поручить валидацию данных модели. Пусть она занимается обработкой данных, это ее задача, а не задача контроллера.

>Формы могут быть переопределены извне через хуки.
И это для того, чтобы сменить порядок следования полей?
1. Программист просто определяет порядок и настройки полей.
2. Форма регистрации по логике отличается от редактирования профиля. Явного класса валидатора не присутствует, вы просто указываете желаемые настройки в опциях поля, а движок сам уже делает всю работу.
3. Это для того, чтобы из других компонентов движке вносить любые изменения в форму. С учетом того, что любые компоненты отключаются/подключаются в один клик в админке — очень полезная особенность.
Давно хотел спросить, почему mootools, а не jquery?
Вы уже спрашивали раньше :-)
Так сложилось, что с MooTools познакомился раньше и начал работу именно с нее.
jQuery мне тоже очень по-душе, и я скорее всего буду использовать ее в следующей мажорной версии движка. Менять коней на переправе смысла нет.
Точно! Я и забыл.

На мой взгляд, jQuery перспективнее с точки зрения жизни продукта, сообщества, развития и т.п.
Согласен, но MooTools тоже не последний фреймворк. Как было упомянуто, следующая версия будет дружить с jQuery.
Sign up to leave a comment.

Articles