中间件Slim v3中的路由模式

如何在中间件中获取路由模式:</ p>

routes.php: </ p>

  $ app-&gt; get('/ myroute / {id}',function($ req,$ res,$ args){
// DO STUFF HERE \ n}) - &gt; add(new MyMiddle());
</ code> </ pre>

middle.php:</ p>

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

在路线中。 php我可以用 $ args ['id'] </ code>获取 {id} </ code>,但是如何在MyMiddle.php中获取它?</ p>

< p>谢谢,

克里斯蒂安莫利纳</ p>
</ div>

展开原文

原文

How can I get route pattern inside middleware:

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
    }
}

In routes.php I can get {id} with $args['id'], but how can I get it inside MyMiddle.php?

Thank you,
Cristian Molina

2个回答




  1. 启用 determineRouteBeforeAppMiddleware </ code>设置:</ p>

      $ config = ['settings'=&gt;  [
    'decisionRouteBeforeAppMiddleware'=&gt; true,
    'displayErrorDetails'=&gt; true,
    ]];
    $ app = new \ Slim \ App($ config);
    </ code> </ pre> </ li>
  2. 您现在可以访问路线了 来自Request的对象,使用 getAttribute()</ code>,并从路径获取参数:</ p>

      $ app-&gt; add(function(function)  $ request,$ response,$ next){
    $ id = $ request-&gt; getAttribute('route') - &gt; getArgument('id');
    返回$ next($ request,$ response); \ n});
    </ code> </ pre> </ li>
    </ ol>
    </ div>

展开原文

原文

  1. Enable the determineRouteBeforeAppMiddleware setting:

    $config = ['settings' => [
        'determineRouteBeforeAppMiddleware' => true,
        'displayErrorDetails' => true,
    ]];
    $app = new \Slim\App($config);
    
  2. You can now access the Route object from the Request, using getAttribute() and, from the route, get at the arguments:

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

douxi2011
douxi2011 该网站位于github.com/slimphp/Slim-Website - 仅限英语。
4 年多之前 回复
douxiaochun4964
douxiaochun4964 哦,告诉我如何改进你的文档。 我经常使用Slim而且我喜欢它,所以我很高兴参加。 如果你愿意,也许我可以开始西班牙语翻译。 我来自西班牙xD。 这是我的电子邮件legomolina@gmail.com。 如果你想我开始翻译,请给我一个。
4 年多之前 回复
duanpacan2583
duanpacan2583 我们希望对文档网站有更多的贡献:)
4 年多之前 回复
dongmo3413
dongmo3413 谢谢你,完美无缺:D。 如果这些小东西都在文档中,我会非常感激。 (如果他们是,请对我说,也许我是盲人(可能是xD)并且看不到他们)。
4 年多之前 回复



我决定加入一个Slim v2示例,因为当我遇到这篇文章时,我正在寻找它。 您可以使用 slim.before.dispatch </ code>回调挂钩中的 $ this-&gt; app-&gt; router() - &gt; getCurrentRoute() - &gt; getPattern()</ code> 完成同样的事情。</ p>
</ div>

展开原文

原文

I decided to included a Slim v2 example as that is what I was looking for when I came across this post. You can use $this->app->router()->getCurrentRoute()->getPattern() from the slim.before.dispatch callback hook to accomplish the same thing.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐