Как я могу «или» на маршруте?Slim 3 - как использовать or-operator в маршруте?
например, /about
и /fr/about
указывают на те же объекты/классы/методы. Таким образом, вместо:
$app->get('/{url:[a-zA-Z0-9\-]+}', function (Request $request, Response $response, array $args) {
// same staff
});
$app->get('/{language:[fr|en]+}/{url:[a-zA-Z0-9\-]+}', function (Request $request, Response $response, array $args) {
// same staff
});
Я пытался с этим:
$app->get('/{url:[a-zA-Z0-9\-]+}|/{language:[fr|en]+}/{url:[a-zA-Z0-9\-]+}', function (Request $request, Response $response, array $args) {
// same staff
});
Я получаю эту ошибку:
Type: FastRoute\BadRouteException
Message: Cannot use the same placeholder "url" twice
File: /var/www/mysite/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php
Любые идеи, что, как решить эту проблему?
Или любые решения, чтобы избежать , повторяя код?
ошибка исходит из вашего последнего шаблона маршрута, вы ссылаетесь на url дважды ... вам не нужно использовать тот же токен дважды. – geggleto
@geggleto любые решения, чтобы избежать повторения кода? – laukok
Чтобы не дублировать код, вы можете посмотреть http://www.slimframework.com/docs/objects/router.html#container-resolution – danopz