2017-07-02 6 views
1

Ist es möglich, Silex-Routen zu definieren, wenn die Routendefinition erfolgt? Zum Beispiel definieren die folgenden Routen je nachdem, was die bisherigen Routen sind:Definieren von Silex-Routen als

/a/{user}/{app_name}/list/ -> /a/{user}/{app_name}/list/{id}/ 
/a/{user}/{app_name}/add/ -> /a/{user}/{app_name}/add/success/ 
/a/{user}/{app_name}/help/ -> no sub route 

Hier die 5. Route {id} sein sollte, wenn die 4.list oder success ist, wenn die 4.add oder nichts ist, wenn Die 4. ist help. Allerdings weiß ich nicht, wie dies in Silex zu tun:

$app -> get('/a/{user}/{app_name}/{action}/{sub}/', function (Silex\Application $app, $user, $app_name, $action, $sub) { 
    ... 
}); 

die offensichtlich nicht für alle von ihnen zu arbeiten.

Gibt es eine Möglichkeit, so etwas zu tun:

$app -> get('/a/{user}/{app_name}/{action}/', function (Silex\Application $app, $user, $app_name, $action) { 
    if ($action == 'list') { 
     $app -> get('/a/{user}/{app_name}/{action}/{id}', function (Silex\Application $app, $user, $app_name, $action, $id) { 
      ... 
     }); 
    } elseif ($action == 'add') { 
     $app -> get('/a/{user}/{app_name}/{action}/success', function (Silex\Application $app, $user, $app_name, $action) { 
      ... 
     }); 
    } 
}); 

Die Aktionen Liste, hinzufügen, Hilfe usw. sind unbestimmt, wie sie durch meine Benutzer definiert werden, die einfache Anwendungen erstellen in unserem System. Es gibt also keine Möglichkeit, sie direkt in meinen Code zu schreiben. Es ist nur, nachdem das Routing zu einer bestimmten Benutzer-App z. /a/jim/cook dass die Aktionen verfügbar sind.

Ist das möglich? Wie?

Antwort

2

die Lösung bei dieser Antwort gefunden: https://stackoverflow.com/a/15214674/49318

$app->get('/pdf/{template}/{args}', function ($template, $args) { 
    ... 
}) 
->assert('args', '.*') 
->convert('args', function ($args) { 
    return explode('/', $args); 
}); 
Verwandte Themen