p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #323333 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #dd2244; background-color: #f7f7f7 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #323333; background-color: #f7f7f7; min-height: 14.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #323333 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #011480; background-color: #f7f7f7 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #323333; background-color: #f7f7f7 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #008080; background-color: #f7f7f7 }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #999988; background-color: #f7f7f7 }
p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #999988; background-color: #f7f7f7; min-height: 14.0px }
li.li4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #323333 }
span.s1 { }
span.s2 { color: #323333 }
span.s3 { color: #999999 }
span.s4 { color: #011480 }
span.s5 { color: #008080 }
span.s6 { color: #991200 }
span.s7 { color: #999988 }
span.s8 { color: #dd2244 }
ul.ul1 { list-style-type: disc }

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 (路由)的更多相关文章

  1. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  2. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  3. nodejs进阶(3)—路由处理

    1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...

  4. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

  5. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  6. ASP.NET路由模型解析

    大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...

  7. 路由的Resolve机制(需要了解promise)

    angular的resovle机制,实际上是应用了promise,在进入特定的路由之前给我们一个做预处理的机会 1.在进入这个路由之前先懒加载对应的 .js $stateProvider .state ...

  8. Android业务组件化之子模块SubModule的拆分以及它们之间的路由Router实现

    前言: 前面分析了APP的现状以及业务组件化的一些探讨(Android业务组件化之现状分析与探讨),以及通信的桥梁Scheme的使用(Android业务组件化之URL Scheme使用),今天重点来聊 ...

  9. ASP.NET Core的路由[5]:内联路由约束的检验

    当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...

随机推荐

  1. Devexpress TileNavPane 控件的使用

    TileNavPane提供分层水平菜单(最多三层),适用于窗体菜单内容不多或只有几个功能较常用时,风格专业简洁: 将TileNavPane拖到窗体上后,点击右上角的任务箭头,选“Add Button” ...

  2. jms的俩种模式

    package com.jiangchong.job; import java.util.Date; import javax.jms.Connection; import javax.jms.Con ...

  3. bootstrapValidator.js,最好用的bootstrap表单验证插件

    前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...

  4. asp.net上传文件超过了最大请求长度[转]

    错误消息:超过了最大请求长度    错误原因:asp.net默认最大上传文件大小为4M,运行超时时间为90S.   解决方案 1. 修改web.config文件可以改变这个默认值            ...

  5. PHPSTORM 10.0.3 --PHP Interpreter is not configured

    PHP Interpreter is not configured Please configure PHP Interpreter to use built-in weberver

  6. java学习第20天(IO流)

    构造方法File file = new File("e:\\demo"); 创建文件夹 File file = new File("e:\\demo"); fi ...

  7. delphi IOS 获取电池信息

    procedure TDeviceInfoForm.btnGetDeviceInfoClick(Sender: TObject); var Device : UIDevice; begin Devic ...

  8. CCS实现input和img水平对齐的方法

    在网页制作中,常将 input 和 img 放在同一行,img标签总是比input高出一个头,非常难看. CCS实现input和img水平对齐的方法 同时给input和img添加vertical-al ...

  9. C# 一些知识点总结(一)_继承,多态,集合,关键字...

    内存中的三大存储区域:栈.堆.静态存储区域 new 关键字:new帮助我们做了三件事:1)在内存中开辟一块空间(开辟内存空间)2) 在开辟的空间中创建对象3)调用对象的构造函数进行初始化对象所以构造函 ...

  10. Roguelike 相关知识

    here is the link here