Генератор форм для CodeIgniter

Владимир | | CodeIgniter, Web разработка.

ci form generator

Создание форм – достаточно рутинная задача. Процесс подробно описан в документации, но можно легко сделать множество механических ошибок. Например, имена и id полей формы нужно указывать несколько раз — в контроллере и представлении.

Самое главное, что в некоторых случаях вы не получите сообщения об ошибках, а значит, найти их можно будет только с помощью тщательного тестирования. Речь идет о правилах проверки полей формы. Эти правила задаются в массиве, и при этом ключ элемента массива должен совпадать с id поля. Но если вы неправильно запишите название, то CodeIgniter будет считать, что для данного поля правила просто не заданы.

Естественно, что даже частичная автоматизация процесса может значительно сэкономить ваше время.

Сначала я пробовал использовать шаблоны для создания форм, но это было не удобно. Код должен быть размещен в разных файлах, да и количество и тип полей постоянно изменяются.

Поэтому я написал небольшой генератор форм для CodeIgniter.

Вообще-то, генератор был написан довольно давно, но постоянно находился в недоделанном состоянии. Не хватало части полей, и интерфейс никак нельзя было назвать дружественным 😉 .

Принцип работы очень простой. На вкладке «Настройки» вы указываете, какие поля вам нужны их тип и имена (атрибуты name и id). Ограничений на количество полей нет.

В поле action вы указываете, куда нужно отправить данные формы. Обычно это имя контроллера и метод (например, main/checkform).

Значение в столбце name (id) устанавливается одинаковым для обоих атрибутов. Это же значение используется при создании массивов с правилами проверки ($rules) и перечнем полей ($fields). Естественно, использовать не латинские символы не рекомендуется 🙂 .

Столбец «value или src или label» позволяет задать надпись на кнопках, адрес рисунка или текст метки для текстовых полей. Т.е. использование значения в этом столбце зависит от типа поля.

В столбце «Правила» указываем правила проверки полей. Точно также как и при создании формы вручную. Эти поля можно оставить пустыми. Кроме того, для некоторых типов полей (например, кнопок) правила не создаются.

Когда все необходимые поля созданы, нажимаем кнопку «Генерировать код».

Созданный код появится во вкладках «Контроллер», «Предствление» и «CSS». Теперь можете его копировать в ваше приложение.

Примечание. Поддержка CSS экспериментальная. Во всех случаях создаются одни и те же правила, которые задают размещение в две колонки. Слева – метки (label), справа – поля.

Несколько общих замечаний

1) Генератор создает код, предназначенный для работы с PHP фреймворком CodeIgniter. Поэтому перед использованием советую, как минимум познакомиться с библиотекой Validation этого фреймворка.

2) Написан генератор так, чтобы сохранить максимальную свободу действий. Это означает, что вы можете не указывать параметры полей формы. Код все равно будет сформирован. Но если вы оставите незаполненным name (id), то смысла в использовании генератора просто не будет.

3) Основное назначение генератора – создать каркас формы, который при необходимости можно подправить вручную. Это значит, что класс контроллера и основную часть представления вам нужно написать самостоятельно или с помощью другого генератора 😉 .

4) Приложение написано полностью на JavaScript. Поэтому вы можете просто сохранить страницу с ним на винчестер.

Буду рад почитать ваши отзывы в комментариях 🙂 . Особенно интересно услышать критику, желательно аргументированную 😉 .

P.S. Судя по текущим результатам опроса на Хабрахабр, CodeIgniter занимает второе место по популярности после Zend Framework. Отставание всего на пару процентов.

UPD (7.10.2008). Добавил простенькую анимацию. Надеюсь, работать станет удобнее 🙂 .

  • Sam

    Версия для Form_validation CI 1.7 будет?

    • Обязательно 🙂
      Только после официального выхода релиза.

      • Sam

        Уже пора готовиться.

  • Sam

    Версия для Form_validation CI 1.7 будет?

    • Обязательно 🙂
      Только после официального выхода релиза.

      • Sam

        Уже пора готовиться.

  • Sam

    Нажатие на «генерировать код» по-хорошему должно открывать вкладку с кодом.

    • Согласен, только вкладок три.
      Была идея добавить какую-нибудь анимацию в заголовок вкладок с кодом (вроде вращающихся по кругу стрелок). Даже заглушки под неё поставил, но пока делать не стал.

      • Sam

        Надо. А то непонятно, что происходит.

        • Учту. Посмотрим, что получится.

        • Уже учел 😉 .
          Добавил анимацию для кнопки «Генерировать код» и вкладок.

        • Sam

          С прогресс-баром лучше, а вот fade только мешает.

        • Да, пожалуй, без fade действительно лучше.

  • Sam

    Нажатие на «генерировать код» по-хорошему должно открывать вкладку с кодом.

    • Согласен, только вкладок три.
      Была идея добавить какую-нибудь анимацию в заголовок вкладок с кодом (вроде вращающихся по кругу стрелок). Даже заглушки под неё поставил, но пока делать не стал.

      • Sam

        Надо. А то непонятно, что происходит.

        • Учту. Посмотрим, что получится.

        • Уже учел 😉 .
          Добавил анимацию для кнопки «Генерировать код» и вкладок.

        • Sam

          С прогресс-баром лучше, а вот fade только мешает.

        • Да, пожалуй, без fade действительно лучше.

  • Как анимация повлияет на производительность?

    • Никак. Просто в течении некоторого времени (установил 1с) будут показаны анимированные gif картинки.
      Хотя я не совсем прав. У браузера уйдет некоторое время на вставку этих картинок. Но вряд ли вы сможете отследить этот момент 😉 .

    • Inflames, время, на которое будет уходить вставка картинок ничтожна, поэтому можно сказать что на производительность это никак не повлияет

  • Как анимация повлияет на производительность?

    • Никак. Просто в течении некоторого времени (установил 1с) будут показаны анимированные gif картинки.
      Хотя я не совсем прав. У браузера уйдет некоторое время на вставку этих картинок. Но вряд ли вы сможете отследить этот момент 😉 .

    • Inflames, время, на которое будет уходить вставка картинок ничтожна, поэтому можно сказать что на производительность это никак не повлияет

  • Pingback: Мини-сайты, привлекающие трафик PPC, утратили свою эффективность. | Affiliate Marketing: Инструкция по применению.()

  • а мне Zend Framework всё равно больше нравится!!

  • а мне Zend Framework всё равно больше нравится!!

  • Подобную фишку бы с jQuery и Ajax скрестить — цены бы небыло !
    как у тебя в Todo добавление и редактирование задач сделано
    (или хотя бы отдельный небольшой урок как сделать так же как в Todo руками)

  • странно — почему то мой коммент не последний встал …

    • Подобную фишку бы с jQuery и Ajax скрестить

      Как вы себе это представляете? Какой именно функционал нужен?
      Сейчас генератор работает на JS, а код, который он создаёт, предназначен только для создания формы и проверки введенных данных.

      • Я себе это представляю так как сделано в Вашем же TODO для создания и редактирования задач.

        • С использованием диалога? Но зачем? В ToDo я использовал диалог для того, чтобы не уходить со страницы с общим списком записей. А здесь создается одна форма. Открыть диалог не сложно, но получится, что под ним ничего нет 🙂

  • Подобную фишку бы с jQuery и Ajax скрестить — цены бы небыло !
    как у тебя в Todo добавление и редактирование задач сделано
    (или хотя бы отдельный небольшой урок как сделать так же как в Todo руками)

  • странно — почему то мой коммент не последний встал …

    • Подобную фишку бы с jQuery и Ajax скрестить

      Как вы себе это представляете? Какой именно функционал нужен?
      Сейчас генератор работает на JS, а код, который он создаёт, предназначен только для создания формы и проверки введенных данных.

      • Я себе это представляю так как сделано в Вашем же TODO для создания и редактирования задач.

        • С использованием диалога? Но зачем? В ToDo я использовал диалог для того, чтобы не уходить со страницы с общим списком записей. А здесь создается одна форма. Открыть диалог не сложно, но получится, что под ним ничего нет 🙂