Symfony 从路由认识它
经过上一篇文章之后,我们呢,可以访问这个默认的页面,你也会看到一堆高级的debug工具。好了,这次我们开始更多地了解这个symfony2.0。
首先我们要明白一点,Symfony2 的配置是一个着实很让人捉急的事情,但是呢并不可怕,尤其是你非常熟练的使用了这种路由规则之后,你就会发现,他比 thinkPHP 的 ActionName/MethodName/data/{dataValue}/data2/{dataValue2},或者是CI这种路由想分页都会给你搞出一堆事情的 (主要是是CI的传入没有key只有value,并且取值的时候是按照位置来取的,也就是说稍微改变一下路由,那么你的p的位置就不对了,用过CI的同学应该被这个坑了一把,又说废话了)ControllerName/MethodName/{value1}/{value2}/{value3},更或者CakePHP那么种连大小写都要区分的路由(my poor English)。废话不多说,我们来看下app/config/里面有什么文件:

大致解释一下,配置的规则,最基本的格式是yml。也可以用php annotation 。
在dev模式下,默认访问*_dev文件。也就是说我们默认访问的是config_dev.yml 和routing_dev.yml。 paramters.yml是YAML的一种比较好的写法而已,暂时不用管。另外,在一个配置中是可以通过一定的语法应用另外一个配置,并且覆盖掉其中的一些变量,也就是配置可以继承(大概是那么个意思,不用深究)。
打开routing_dev.yml:

看到这么复杂的文件总会让初次认识他的你有那么点蛋碎
我们记住配置的几种种写法(常用的).
第一: 如_welcome 他非常明确地告诉Symfony2 , 只要满足 /welcome这个模式,那么就访问我的AcmeDemoBundle里面的Welcome控制器的index 方法。
第二: 如 _demo 。如果说路由的前缀(prefix)是 /demo,那么你就去看一看DemoController.php里面的注释。
第三: 如 _wdt 。如果说路由的前缀满足 /_wdt , 那你请到@WebProfilerBundle/Resources/config/routing/wdt.xml里面去看一看具体匹配到哪个
我一般是结合第一和第三中写法,因为用注释来写的话,我一会就找不到具体的路由在哪里了。
然后_wdt, _profiler _configurator _main 就是你之前看到的那个高级的debug工具的路由。它会默默陪伴你到开发结束,并且提供给你很多帮助。
来看一个比较实际的例子:

我现在有很多的Bundle,他么分别负责不同的模块嘛,并且基本没有什么依赖,所以为啥我要把路由写在一起呢,所以,我在主路由,也就是app/config/routing.yml里面,分别表示的小路由 前缀,以及小路由的地址。这样一来Symfony会帮我们找到并且正确匹配的。
然后我们可以通过 app/console 的路由debug工具来看一看我们到底有哪么些路由:

另外:这里有一个小技巧分享一下,如果你使用的是Annotation 的注释,如果你的路由有问题,也就是写错了,他会这样提示你,Can't Load Controller XXX.php 千万不要以为你的Controller 它找不到,而是你的路由配置写错了! 相反,如果说使用yml来配置的话,它会提示得比较具体错误在哪里。
Symfony 从路由认识它的更多相关文章
- symfony生成路由
控制器里生成地址 $this->generateUrl('course_manage_show_test', array('id' => 1)) twig前端文件生成地址: {{ path ...
- symfony学习笔记——路由
symfony的路由其实就是通过url映射到控制器的一个设置 _test: path: /test/{type}/{page} methods: [GET] defaults: {_con ...
- symfony框架在中国移动cmwap网络下访问的问题
最近用symfony框架给手机app做后台,发现在中国移动cmwap网络下会出现问题,所有请求都路由到根路径了 左图为原始$_SERVER对象,右图为$request->server对象由于re ...
- [分享会] 微服务框架设计 (基于Swoole)
框架三要素 1. Service 通信 2. 服务管理 3. 开发组件 为什么需要服务 1.自治性 2.可组合 3.异构性 2.弹性扩展 -实现方式- 共享库 1.二进制文件/Compos ...
- 原来 laravel 路由 参数可以为可选。。。 很灵活
基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码代码如下: Rout ...
- symfony安装笔记
下载http://symfony.com/download,这里版本是2.8 将D:\ApacheServer\php路径添加到环境变量path中,在cmd命令行中可以执行php命令 打开php.in ...
- laravel route路由
基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 代码如下: Route::g ...
- 我 && symfony3 (路由)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #323333 } p. ...
- symfony2 路由工作原理及配置
1.路由是程序的方法和URL的一一映射.
随机推荐
- HDU 2612 Find a way bfs 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=2612 bfs两次就可将两个人到达所有kfc的时间求出,取两人时间之和最短的即可,这个有点不符合实情,题目应该出两 ...
- 联想A390T刷机ROOT教程
一.联想A390T手动进入Recovery的方法: [步骤一]首先,将你的A390T手机关机,关机状态下,先按住电源键2秒,不要松开,再同时按下音量加.音量减两个键,此时,3个键一直按住不要放开,几秒 ...
- 免费获取 Kaspersky Small Office Security 90 天授权
Kaspersky Small Office Security 是卡巴斯基出品的企业版杀毒软件,目前美国官网上官方有赠送活动,能够免费获取 90 天的授权,但必须要使用美国代理. 获取地址:http: ...
- Leetcode 1022. Sum of Root To Leaf Binary Numbers
dfs class Solution: def sumRootToLeaf(self, root: TreeNode) -> int: stack=[(root,0)] ans=[] bi_st ...
- java IO 学习(二)
文件表示形式的转换: 一.从系统文件变成java中可以使用的文件对象 File file = new FIle("文件的路径"); 二.读取文件系统中文件的原始字节流,要读取字符流 ...
- Centos7环境下安装python3.6.4 并与python2共存
最近安装了新系统centos7,本身自带python2.7,但是由于需要使用python3 来运行一些应用,所以想到在centos环境下安装python3,并保证其和python2 可以共存. 步骤如 ...
- [QT][SQLITE]学习记录二 日期查询
资料例程: 1.dongfangyu SQL时间段查询 : http://blog.csdn.net/dongfangyu/article/details/4607236 2.痕网 - henw S ...
- Windows与.NET Framework、数据库版本对应关系
================== windows XP/server 2003 (.NET Framework与 SQL Server\Oracle) 支持.NET版本:.NET Framewor ...
- Idea问题记录
1.warning提示idea found duplicate code 打开 Settings → Editor → Inspections. 在出现的搜索栏处搜索 Duplicated Code ...
- linq to sql 怎么查询前 11 条数据
(from 新表 in db.books where 新表.bookid < 400 select 新表).Take(11); storeDB.Albums.OrderByDescending( ...