Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

HTML_MetaForm: извлечение информации о структуре HTML-формы и ее обработка (Дмитрий Котеров, оценка: 9)
Goto page Previous  1, 2, 3, 4, 5
Author Message
Антон Иконников
Guest





Карма: 387
   поощрить/наказать


PostPosted: Sat Aug 30, 2008 12:45 pm (написано за 10 минут 16 секунд)
   Post subject:
Reply with quote

Дмитрий, а как правильно бороться со следующей ситуацией, когда есть группа радиокнопок, причем в начальном состоянии ни одна не включена. Задача - заставить пользователя выбрать один из вариантов. Если отправить форму не выбрав кнопку, то получим, что поле с радиокнопками содержит недопустимое значение (пустое). При этом никакие дальнейшие валидаторы для этого поля уже проверяться не будут. А хотелось бы, чтобы для данного случая выдавалось сообщение, что надо выбрать одну из кнопок. Сейчас я добиваюсь желаемого установкой "meta:dynamic" и "meta:validator = 'filled'". Хотя, в целом, функциональность meta:dynamic здесь не нужна, поскольку значения кнопок динамически менять никто не хочет. Можно ли в данной ситуации поступить более правильно?
Back to top
slmark
Участник форума



Joined: 09 Aug 2006
Posts: 20
Карма: 0
   поощрить/наказать

Location: Минск, Беларусь

PostPosted: Tue Oct 21, 2008 10:49 am (спустя 1 месяц 21 день 22 часа 3 минуты; написано за 7 минут 54 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
mot wrote:
Правильно ли я понимаю, что Вы (неявно) предлагаете отказаться от параллельных проверок на стороне клиента с помощью Javascript и все проверки формы вести на стороне сервера, возвращая в случае ошибки заполенную форму + сообщение об ошибке?
На самом деле, возможность "прозрачной" привязки JavaScript-валидаторов - это мощнейшая особенность MetaForm. Только... она еще не реализована. Но в теории тут проблем нет никаких, и идеология MetaForm как раз разрабатывалась с учетом будущей переспективы JavaScript-валидаторов.

Действительно, когда MetaForm видит что-то вроде

<input meta:validator="filled" name="a" ...>

ему (в теории) ничего не стоит добавить рядом с этим тэгом контейнер <script>...</script>, в котором на onsumbit формы назначается JavaScript-валидатор с именем validator_filled. А можно это делать рядом с hidden-полем, содержащим метаданные, чтобы не размножать лишний раз script-контейнеры.

В итоге Вы получаете беспрецедентную возможность: указав один раз валидатор, Вы одновременно получаете как JavaScript-, так и PHP-проверку. Первая нужна для удобства использования, вторая - на случай, если JS отключен, а также просто из соображений безопасности. Причем, если для какого-то из валидаторов нет JS-версии, то все это "прозрачно" для программы: будет использована только PHP-проверка. Т.е. мы выводим JS-проверки как раз на тот слой абстракции, на котором они должны быть: опциональный.

Как задавать JavaScript-валидаторы? Это можно делать, например, объявив функцию validator_js_filled(), которая просто через echo печатает JavaScript-код проверки. Или же все-таки собирать все валидаторы в отдельном файле, который MetaForm будет просматривать для определения, имеется ли JS-валидатор для поля или нет (при этом метаданные поля передаются в валидатор в виде JS-массива, т.е. так, что с ними можно работать непосредственно из JS). Я еще окончательно не решил, как удобнее.
Дмитрий, не могли бы Вы описать более подробно процедуру создания js валидатора. Спасибо.
Back to top
View user's profile Send private message
slmark
Участник форума



Joined: 09 Aug 2006
Posts: 20
Карма: 0
   поощрить/наказать

Location: Минск, Беларусь

PostPosted: Mon Jan 05, 2009 7:05 pm (спустя 2 месяца 15 дней 8 часов 16 минут; написано за 41 секунду)
   Post subject:
Reply with quote

Дмитрий, не могли бы Вы направить меня на путь истинный относительно моего предыдущего поста? :)
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Feb 22, 2009 1:20 am (спустя 1 месяц 16 дней 6 часов 15 минут; написано за 35 секунд)
   Post subject:
Reply with quote

Не поддерживаются они пока в MetaForm... так что и процедуры никакой нет.
Нужно дорабатывать библиотеку и делать в ней эту поддержку, в теории здесь проблем никаких нет.
Back to top
View user's profile Send private message Send e-mail
Валера Ермолин
Guest





Карма: 387
   поощрить/наказать


PostPosted: Mon Mar 30, 2009 6:49 pm (спустя 1 месяц 8 дней 17 часов 28 минут; написано за 1 минуту 42 секунды)
   Post subject: :manual
Reply with quote

Вопрос по поводу :manual
Это получается, что при обработке я вывожу ошибки полей без :manual. Если ошибок нет то начинаю выводить ошибки полей с :manual?
Судя по примеру :
"
<textarea name="txt" meta:validator="filled:manual">

Далее в нужном месте обработчика следует вызвать следующий код:

Листинг 9 скопировать код в буфер обмена

switch ($metaFormAction->process()) {
    ...
    case 'doSend':
        // Process field 'txt' manually.
        if (!$metaFormAction->process(array('txt'))) break;
        // Process entered data here.
        ...
        break;
    ...
}
"

Не очень удобно.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Wed Jul 01, 2009 5:27 pm (спустя 3 месяца 22 часа 37 минут; написано за 11 секунд)
   Post subject:
Reply with quote

Все так.
Что именно неудобно?
Back to top
View user's profile Send private message Send e-mail
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 39
   поощрить/наказать


PostPosted: Thu Oct 22, 2009 3:34 pm (спустя 3 месяца 20 дней 22 часа 7 минут; написано за 3 минуты 38 секунд)
   Post subject:
Reply with quote

Нашел интересный баг, причем не знаю в чем
на своем компе - настроено все нормально - дефолтное дебиановское окружение - библиотека нормально работает
на сервере php собран с какими-то извращенными опциями, старый - 5.2.5, и вообще собирали очень неадекватные люди :)

В результате тот-же код в MetaForm - не добавляется поле input HTML_MetaForm с подписью, в результате форма получется всегда невалидной
пока не нашел ошибку, не могли бы подсказать, в каком направлении искать?
пока добрался до того, что в _runHandlersForTag $this->sp_tags отличаются
Back to top
View user's profile Send private message Send e-mail
Павел_X1
Guest





Карма: 387
   поощрить/наказать


PostPosted: Sun Oct 25, 2009 5:08 pm (спустя 3 дня 1 час 33 минуты; написано за 3 минуты 4 секунды)
   Post subject: PHP 5.3
Reply with quote

Добрый день.

Обновил на сервере версию PHP до 5.3, в результате чего в следующих строках вылезла ошибка:

Assigning the return value of new by reference is deprecated

здесь в $fp =& new HTML_FormPersister(); (файл FormPersister.php)
Code (php): скопировать код в буфер обмена
    function ob_formPersisterHandler($st)
    {
        $fp =& new HTML_FormPersister();
        $r = $fp->process($st);
        return $r;
    }
и при подключении библиотеки
Code (php): скопировать код в буфер обмена
ob_start (www.php.net/ob_start)(array (www.php.net/array)('HTML_FormPersister', 'ob_formpersisterhandler'));
$metaForm =& new HTML_MetaForm($CONF_Seecret_code_htmlmetaform);
ob_start (www.php.net/ob_start)(array (www.php.net/array)(&$metaForm, 'process'));
$metaFormAction =& new HTML_MetaFormAction($metaForm);
Во всех местах я заменил "=&" на "=" и сообщения об ошибках пропали, вроде всё работает.

Но хотелось бы точно знать, что при этом ничего не поломалось, так можно вообще делать?
Планируется ли релиз обновлённый, для использования в PHP 5.3

Спасибо!
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 39
   поощрить/наказать


PostPosted: Sun Oct 25, 2009 5:24 pm (спустя 15 минут; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

Павел_X1
Это просто синтаксис для совместимости с php4, ничего при этом не поломается, а вот насчет релиза, тут я хз.

Эх, блин, когда же у нас обновят на работе...
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Oct 26, 2009 2:15 pm (спустя 20 часов 51 минуту)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «Флейм»,
расположенную в форуме Мусоропровод (26 Октября 2009, 15:15).
Back to top
View user's profile Send private message Send e-mail
nrnwest
Заглянувший



Joined: 22 Dec 2009
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Dec 22, 2009 12:20 pm (спустя 1 месяц 26 дней 22 часа 5 минут; написано за 2 минуты 11 секунд)
   Post subject:
Reply with quote

Скажите как отменить заполнения формы данными веденными пользователем, после того как форма была обработана, и все данные сохранены.
То есть пользователь нажал субмит все поля правильно заполнены, но форма все равно заполняется данными, а хотелось чтоб поля были пустыми.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3, 4, 5
Page 5 of 5    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML