经过上一篇文章之后,我们呢,可以访问这个默认的页面,你也会看到一堆高级的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. java垃圾回收期如何工作(编程思想)

    垃圾回收器如何工作: 在以前的程序语言中,在堆上分配对象的代价十分昂贵,因此读者会自然觉得对Java中所有对象(基本类型除外)都在堆上分配的方式也非常高昂.然而,垃圾回收期对提高对象的创建速度,却具有 ...

  2. 取出表A中第31到第40记录

    方法一: select top 10 * from A where RowId not in (select top 10 RowId from A) 方法二(使用临时表): with tempTab ...

  3. Ubuntu网络配置IP和DNS等,适用于14.04,16.04和17.10

    本文主要介绍Ubuntu系统的网络设置,包括IP,DNS和主机名等,适用于14.04,16.04和17.10等版本 ===============  完美的分割线 ================ = ...

  4. 新转移注意(caffe):ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory

    https://github.com/NVIDIA/DIGITS/issues/8 For this error ImportError: libcudart.so.7.0: cannot open ...

  5. error: 'ENOSYS' undeclared (first use in this function)

    /************************************************************************ * error: 'ENOSYS' undeclar ...

  6. hadoop之 YARN配置参数剖析—RM与NM相关参数

    参数均需要在yarn-site.xml中配置: 1. ResourceManager相关配置参数 (1) yarn.resourcemanager.address 参数解释:ResourceManag ...

  7. winform 勾选可以改变框控件

    public partial class UCCheck : UserControl { [Browsable(true), Category("修改属性"), Descripti ...

  8. Python笔试题&面试题总结

    黑色加粗的是笔试题,蓝色是面试题 1.什么是GIL 2.Python中的@staticmethod和@classmethod的区别 (**) 3.Python里面如何拷贝一个对象,并解析深浅拷贝 4. ...

  9. Winfrom 开源组件Control.FirefoxDialog使用

    1. 如果窗体是以模式窗体方式打开的,会出现点了应用,窗体就立马关闭.此时可能别的设置需要一块设置,这种就存在问题. var form1 = new Form1(); form1.ShowDialog ...

  10. Excel图片调整大小

    Excel图片调整大小 Sub 图片调整合适大小() ' Debug.Print ActiveWorkbook.Name 图片显示比例 = 0.9 '1为顶满单元格 Dim wb As Workboo ...