2016-03-18 4 views
1

Как я могу получить шаблон маршрута внутри промежуточного слоя:шаблон маршрута в промежуточное Слим v3

routes.php:

$app->get('/myroute/{id}', function($req, $res, $args) { 
//DO STUFF HERE 
})->add(new MyMiddle()); 

middle.php:

class MyMiddle { 
    public function __invoke($req, $res, $next) { 
     //DO STUFF 
    } 
} 

В routes.php я могу получите {id} с $args['id'], но как я могу получить его внутри MyMiddle.php?

Спасибо,
Cristian Молина

ответ

3
  1. Включить determineRouteBeforeAppMiddleware настройки:

    $config = ['settings' => [ 
        'determineRouteBeforeAppMiddleware' => true, 
        'displayErrorDetails' => true, 
    ]]; 
    $app = new \Slim\App($config); 
    
  2. Теперь вы можете получить доступ к объекту маршрута из запроса, используя getAttribute() и от маршрута, получить по аргументам:

    $app->add(function ($request, $response, $next) { 
        $id = $request->getAttribute('route')->getArgument('id'); 
        return $next($request, $response); 
    }); 
    
+0

Спасибо, работает отлично: D. Я был бы очень признателен, если бы это было в документации. (Если они, пожалуйста, сказали мне, может быть, я слепой (возможно, xD) и не вижу их). – legomolina

+0

Нам хотелось бы больше вклада в сайт документации :) –

+0

О, просто скажите мне, как я могу улучшить ваши документы. Я использую Slim много, и мне это нравится, поэтому я рад принять участие. И если вы хотите, возможно, я смогу начать перевод на испанский. Я из Испании xD. Это моя электронная почта [email protected] Поэтому, пожалуйста, пришлите мне письмо, если хотите, чтобы я начал перевод. – legomolina

0

Я решил включить пример Slim v2, так как это то, что я искал, когда наткнулся на это сообщение. Вы можете использовать $this->app->router()->getCurrentRoute()->getPattern() от крючка обратного вызова slim.before.dispatch, чтобы выполнить то же самое.

Смежные вопросы