Wie von Thomas gesagt, können Sie ja. Der wichtige Teil der Dokumentation ist route requirements:
In einigen Fällen möchten Sie vielleicht nur bestimmte Ausdrücke übereinstimmen. Sie können Anforderungen mithilfe von regulären Ausdrücken definieren, indem Sie assert für das Controller-Objekt aufrufen, das von den Routingmethoden zurückgegeben wird.
Zum Beispiel:
$app->get('/blog/{postId}/{commentId}', function ($postId, $commentId) {
// ...
})
->assert('postId', '\d+')
->assert('commentId', '\d+');
in Ihrem Fall würde also die Definition der Route so etwas wie:
$this->get('/{bye}', function (Request $request) use ($app) {
return $app['twig']->render('bye.html.twig', []);
})
->assert('bye', '^(adios|goodbye)$')
->bind('bye');
Wenn Sie auch den Wert des Parameters wissen wollen, Übergeben Sie es einfach an die Steuerung (der Parametername muss mit dem Namen des Parameters in der Routendefinition übereinstimmen):
$this->get('/{bye}', function (Request $request, $bye) use ($app) {
if ($bye === 'adios') {
$sentence = "eso es todo amigos!";
}
else {
$sentence = "that's all folks!";
}
return $app['twig']->render('bye.html.twig', ["sentence" => $sentence]);
})
->assert('bye', '^(adios|goodbye)$')
->bind('bye');
Und, ist es möglich, aus der Schließung Funktion zu wissen, wenn es aufgerufen wurde mit 'adios' oder 'tschüss'? Danke – cybtow
@cybtow, Ja ist es. Siehe update. – mTorres
Ich hatte überlegt, von Silex zu Symfony zu migrieren (vor allem wegen meines Mangels an Wissen in Silex), aber nach und nach sehe ich Es ist möglich, fast alles zu tun, was Sie leicht mit Symfony machen können. " –