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/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut können Sie überprüfen, array mit Symfony2-Validator-Komponente, e.g
UniqueEntity
innerhalb dieser Einschränkung-Auflistung?Wenn Sie bauen wollen, eine API mit Symfony2 (ähnlich wie mit silex), es gibt ein gutes tutorial hier: http://williamdurand.fr/2012/08/02/rest-apis-with-symfony2-the-right-way/
Der beste Weg, um überprüfen Sie die gesendeten Werte auf silex ist noch zu verwenden validation & form Komponenten (mit Modell) ! Sie sind gemacht, um diese durchführen ! Lesen Sie die vollständige Folie erstellt von Hugo Hamon, bauen Sie Ihre API mit silex ! http://www.slideshare.net/hhamon/silex-meets-soap-rest (siehe Seite 42 für die Validierung)
Nicht bestätigen, indem man geschickt Elemente in der Handlung.
Durch, dies zu tun, halten Sie Ihren code sauber und evolutive !
Ist es ganz gut erklärt in dem Symfony-Book hier: http://symfony.com/doc/master/book/forms.html#adding-validation