码迷,mamicode.com
首页 > 其他好文 > 详细

我 && symfony3 (路由)

时间:2016-11-03 02:20:18      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:form   如何使用   cal   back   require   配置   tle   for   round   

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: "AppBundle\Controller\ApiController::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: "AppBundle\Controller\ApiController::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

我 && symfony3 (路由)

标签:form   如何使用   cal   back   require   配置   tle   for   round   

原文地址:http://www.cnblogs.com/zeopean/p/symfony3.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!