经过上一篇文章之后,我们呢,可以访问这个默认的页面,你也会看到一堆高级的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 从路由认识它的更多相关文章

  1. symfony生成路由

    控制器里生成地址 $this->generateUrl('course_manage_show_test', array('id' => 1)) twig前端文件生成地址: {{ path ...

  2. symfony学习笔记——路由

    symfony的路由其实就是通过url映射到控制器的一个设置 _test:    path: /test/{type}/{page} methods: [GET]    defaults: {_con ...

  3. symfony框架在中国移动cmwap网络下访问的问题

    最近用symfony框架给手机app做后台,发现在中国移动cmwap网络下会出现问题,所有请求都路由到根路径了 左图为原始$_SERVER对象,右图为$request->server对象由于re ...

  4. [分享会] 微服务框架设计 (基于Swoole)

    框架三要素 1. Service 通信 2. 服务管理 3. 开发组件   为什么需要服务 1.自治性 2.可组合 3.异构性 2.弹性扩展   -实现方式-   共享库 1.二进制文件/Compos ...

  5. 原来 laravel 路由 参数可以为可选。。。 很灵活

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码代码如下: Rout ...

  6. symfony安装笔记

    下载http://symfony.com/download,这里版本是2.8 将D:\ApacheServer\php路径添加到环境变量path中,在cmd命令行中可以执行php命令 打开php.in ...

  7. laravel route路由

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 代码如下: Route::g ...

  8. 我 && symfony3 (路由)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #323333 } p. ...

  9. symfony2 路由工作原理及配置

    1.路由是程序的方法和URL的一一映射.

随机推荐

  1. PHP与Java集成开发详解(一)

    很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP. 时间一天天过去,这两个亮点也变得越来越亮,很快,它们受到了编 ...

  2. 005PHP文件处理——目录操作,统计大小 filesize unlink

    <?php /* 目录操作,统计大小 filesize unlink * */ $dir = dir("."); while (($file = $dir->read( ...

  3. vue.js-列表分页

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. TStringGrid的Rows索引值 和 Cells的 索引值, Row的赋值

    Caption := sgShopList.Rows[sgShopList.RowCount +].CommaText; Caption := sgShopList.Rows[sgShopList.R ...

  5. 关于CMD中延迟环境变量嵌套的实现方法

    在我昨天做的一个bat中(自动按日期重命名文件名)涉及到这方面的问题 以前涉及到这里时就想别的办法替代过去,今天好好扒出来说说: 实现变量嵌套的2种方法: 1,使用call实现变量嵌套 变量嵌套:即在 ...

  6. 201621123005《Java程序设计》第十次实验总结

    201621123005<Java程序设计>第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 1. 常用异常 1.1 自己 ...

  7. win7下解压安装mysql的方法

    在win7下通过解压安装mysql 5.7一直出现启动不成功,网上找了好久终于找到一个解决方法,记录一下: 1.解压下载的压缩包 2.在解压目录下,将my-default.ini改名为my.ini, ...

  8. 词云:解决pip install wordcloud安装过程中报错“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1”问题

    外部环境:ubuntu16.04, 64bits, 全局环境python2.7 在虚拟环境(python3.5)中执行 pip install wordcloud 时安装失败,报错: error: c ...

  9. C# 序列化详解,xml序列化,json序列化对比

    本文讲讲一些纯技术的东西.并且讲讲一些原理性的东西,和一般的百度的文章不一致,如果你对序列化不清楚,绝对可以很有收获. 技术支持QQ群(主要面向工业软件及HSL组件的):592132877  (组件的 ...

  10. PyalgoTrade 交易(五)

    我们继续采取简单的策略,这次模拟实际交易.这个想法很简单: 如果调整后的收盘价高于SMA(15),我们将进入多头仓位(我们下单买入市价). 如果调整后的收盘价低于SMA(15),我们退出多头头寸(我们 ...