zoukankan      html  css  js  c++  java
  • 我 && symfony3 (路由)

    symfony 在控制器定义路由

     

    @Route("/lucky/number")     #必须用双引号

     

    @Route("/api/get-lucky-number/{number}"#{number} 为传参

     

    routing.yml 配置路由

     

     

    api:

        path:     /api/{_locale}/{year}/{title}.{_format}

        defaults: {_controller: AppBundle:Api:getJson, _format:html}

        requirements:

            _locale: en|fr

            _format: html|rss

            year:    d+

        schemes:  [http]

    show:

        path:     /show.json

        defaults:  {_controller: AppBundle:Api:showUrl}

        schemes:  [http]

     

    tpl:

        path:     /lucky/number

        defaults: {_controller:AppBundle:Api:number}

        schemes:  [http]

    • api : 表示该理由的别名,在 使用控制器使用 generate && generateUrl 可以使用到
    • path : 表示访问到url ,其中参数可以用{}传递 ,传递到参数可以在 控制器中动作参数使用
    • defaults : 表示对应到控制器及方法,APPBundle 表示控制器所在目录,Api 表示控制器,getJson 表示请求方法
    • requirements : 表示参数到验证方式,其中 | 表示 ‘或’, d+ 为匹配一个数字
    • schemes : 表示对应到请求模式,http | https

     

    下面介绍下在控制器中,如何使用这样到router

     

      # $year,$title 就是{}中到参数, $_controller 表示控制器, $_route 对应别名 api,show, tpl

        public function getJsonAction($title, $year, $_locale, $_format, $_controller, $_route)

        {

            $numbers = [];

            for ($i = 0; $i < 10; $i++)

            {

                $numbers[] = rand(0, 100);

            }

            $other = ['title' => $title, 'year' => $year, '_locale' => $_locale, '_format' => $_format, '_controller' => $_controller, '_route' => $_route];

            return  new JsonResponse($other);

        }

        

        /**

           #运行结果

            {

                title: "api",

                year: "2014",

                _locale: "en",

                _format: "html",

                _controller: "AppBundleControllerApiController::getJsonAction",

                _route: "api"

            }

            

        */

     

        public function showUrlAction()

        {

            //获取对应的url

            $params = $this->get('router')->match('/lucky/number');

     

            //生成uri

            $uri = $this->get('router')->generate('api', [

                'year'  => '2022',

                'title' => 'en',

            ]);

     

            //生成带域名的url

            $url = $this->generateUrl('api', [

                'year'  => '2022',

                'title' => 'fr',

                '_format'   => 'html'

            ], UrlGeneratorInterface::ABSOLUTE_URL);

    //        $uri = '';

            return new JsonResponse(['params' => $params, 'uri' => $uri, 'url' => $url]);

     

        }

        

        /**

            {

                params: {

                _controller: "AppBundleControllerApiController::numberAction",

                _route: "app_api_number"

                },

                uri: "/api/en/2022/en",

                url: "http://127.0.0.1:8000/api/en/2022/fr"

            }

        

        */

    • $this->get('router')->generate('api' , ... ) 表示获取一个uri
    • $this->generateUrl('api', , UrlGeneratorInterface::ABSOLUTE_URL) 则表示生成绝对到url
  • 相关阅读:
    接口文档神器之apidoc
    ApiDoc 后端接口注释文档的使用
    Golang 数组和切片
    go切片展开
    Go的json解析:Marshal与Unmarshal
    golang depth read map
    golang 多级json转map
    GoLang中 json、map、struct 之间的相互转化
    利用delve(dlv)在Visual Code中进行go程序的远程调试-debug方式
    maximum-depth-of-binary-tree——找出数的最大深度
  • 原文地址:https://www.cnblogs.com/zeopean/p/symfony3.html
Copyright © 2011-2022 走看看