PHP-валидатор полей формы (Form validator)

jonjonson

Охренеть
Фанат, а ещё кроме избыточности и сложности существует проблема понимания идей заложенных автором(и) в их творения и жёсткому следованию их "правильному пути". На простых примерах QF вроде как хороши, а когда возникают сложные задачи, то проще своих десять if написать, чем подстраиваться под работу кода. :)

ИМХО QF не совсем соответствуют MVC
 

zerkms

TDD infected
Команда форума
Фанат
И в результате получается вещь, в сто раз большая по размеру, чем та форма, вместе с фалидатором, которую надо обработать...
ты имеешь ввиду вес библиотек, или кода, который будет написан с использованием этих библиотек?
если 1 - то 2007год, это не то время, когда есть смысл экономить на дисковом пространстве в ущерб чему либо

btw - мы от qf отказались (ввиду ряда объективных и субъективных причин) в пользу своего кода (хелперы + валидаторы)
 

Фанат

oncle terrible
Команда форума
jonjonson
для MVC есть, вроде, FQ2.
а в остальном - об этом я и пишу.

zerkms
я имею в виду вес библиотек.
Но код, кстати, в лёгкую перевесит тоже.

И вообще - я, блин, не в экономическом смысле. а в философском. вот jonjonson
развернул, как раз мою мысль.
 

jonjonson

Охренеть
Фанат, не знал. Пойду посмотрю...
~ Обновлено.
Посмотрел их wiki и опять не согласен, что там MVC.
Настою ещё раз, что валидация данных может осуществляться только в модели и контроллере на стороне сервера.
И понятие формы к ним не относиться, если форма не часть модели данных (создание, изменение, правка форм).
 

Фанат

oncle terrible
Команда форума
На самом деле, я не хотел больше влезать в этот топик, сколько бы витков в нем не повторялось.
Уж слишком понятно, что однозначного ответа в нем нет, и никогда не будет.
кто-то ифы, кто-то собственный, кто-то готовое. Все правы, всем удобно. Спорить нет смысла.

Просто формулировка уж очень понравилась.
собственно, она впрямую к теме не относится, а передает мою философию разработки.
И является противоположной по отношению к любителям "сделать универсальный движок для всего и вся"
В общем, из серии "преждевременная оптимизация - зло".
 

diamond_krnl

pure-php
Может попытаться отделить мух от катлет:
1. фильтрация/подготовка данных
2. валидация данных
3. посторение форм (quickform)
4. связи полей
---

считаю нужным только 1. и 2.
3. скорее излишевство
от 4. не куда не убежать -- только руками.

маленький пример, код абстрактный, "на коленке":
PHP:
$validator["comment"]["type"]      = "text";
$validator["comment"]["required"]  = false;
$validator["comment"]["validator"] = array("min"=>8 "max"=>512);
$validator["commnet"]["filter"]    = array("strval", "trim", "xss");
list($safe["cooment"], $errors["comment"]) = SomeValidateMethod($_POST["comment"], $validator["comment"]);

//VS

$safe["comment"] = xss(trim(strval($_POST["comment"]));
if($safe["comment"]=="") { $errors["comment"][] = E_VALIDATOR_REQUERED; }
if(! (strlen($safe["comment"]) >= 8 && $safe["comment"] <= 512) { $errors["comment"][] = E_VALIDATOR_SIZE; }
оба варианта представленые выше достойны, но например с закачкой файлов вариант более нагляден/читаем:

PHP:
$validator["image"]["type"]      = "file";
$validator["image"]["required"]  = false;
$validator["image"]["validator"] = array("ext"=>array("jpg","jpeg","gif","png"), "max"=>1*MB, callback=>"isImageFile", "maxx"=>800, "maxy"=>600);
$validator["image"]["filter"]    = array("strval", "xss");
 

jonjonson

Охренеть
diamond_krnl, вы мне приведите пример валидации даты на основе трёх выпадающих списков.
 

diamond_krnl

pure-php
jonjonson
4. связи полей я не расматривал умышленно.
я лишь примел пример то что валидация-фильтраци имеет право на жизнь в простых формах(ох как не хочетсяа писать это слово :) ) и закачке файлов/картинок, без проверки связей.
 

jonjonson

Охренеть
diamond_krnl, валидация и фильтрация не имеет право на жизнь, а просто необходима для получения данных из форм любой сложности. Мало того, из форм динамически формируемых при использования JavaScript на стороне клиента.

В данном случае вы упёрлись в не универсальную универсальность своего валидатора. :)
 
Сверху