Validierung der POST-Daten ohne ein Modell in Silex / Symfony 2?

Baue ich eine RESTful-Anwendung, die nur dazu dienen, json/xml-Daten, und die habe ich gewählt Silex, da weiß ich schon (ein bisschen), Symfony 2 und da ist klein, ich brauche keine Rute, etc...

Gibt es keine Modelle, nur plain old SQL-Abfragen mit Doctrine dbal, und der serializer. Wie auch immer, ich soll überprüfen POST/PUT-Anfragen. Wie dies geschehen kann ohne die Verwendung von Formular-Komponente und Modelle?

Ich meine POST-Daten ist ein array. Kann ich bestätigen es (das hinzufügen von constraints) und wie?

BEARBEITEN: Ok, jetzt habe ich gefunden, eine interessante Bibliothek, das ist Respekt/Validierung. Es nutzt auch sf Einschränkungen, wenn nötig. Ich landete mit etwas wie diesem (früh-code :P), dass ich verwenden, wenn es gibt nichts besseres:

$v = $app['validation.respect'];

$userConstraints = array(
    'last'     => $v::noWhitespace()->length(null, 255),
    'email'    => $v::email()->length(null, 255),
    'mobile'   => $v::regex('/^\+\d+$/'),
    'birthday' => $v::date('d-m-Y')->max(date('d-m-Y')),
);

//Generic function for request keys intersection
$converter = function(array $input, array $allowed)
{
    return array_intersect_key($input, array_flip($allowed));
};

//Convert POST params into an assoc. array where keys are only those allowed
$userConverter = function($fields, Request $request) use($converter) {

    $allowed = array('last', 'email', 'mobile', 'birthday');

    return $converter($request->request->all(), $allowed);
};

//Controller
$app->match('/user', function(Application $app, array $fields)
    use($userConstraints) {

    $results = array();

    foreach($fields as $key => $value)
        $results[] = $userConstraints[$key]->validate($value);

})->convert('fields', $userConverter);
  • Respekt sieht sehr gut aus, vielleicht in mein Nächstes kleines Projekt.
  • Könnten Sie vielleicht posten Sie Ihre Achtung-Service-Provider für Silex?
  • $app['validation.respect'] = $app->share(function() { return new \Respect\Validation\Validator; });
  • Haben Sie sich Gedanken über die Verwendung des Symfony ValidatorServiceProvider, die auch in der Lage ist die Validierung von assoziativen arrays: silex.sensiolabs.org/doc/providers/...
InformationsquelleAutor gremo | 2012-08-10
Schreibe einen Kommentar