经过上一篇文章之后,我们呢,可以访问这个默认的页面,你也会看到一堆高级的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. call()与apply()用法

    call()和apply()的作用都是一样的——通过改变函数体内部 this 的指向,借用对象的方法的目的 还是举个栗子吧: function Cat(){ this.food = 'fish'; t ...

  2. 041——VUE中组件之pros数据的多种验证机制实例详解

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

  3. bzoj2120

    题解: 可修改莫队 我们加入一个时间T 然后在排序的时候考虑一下时间 在计算的时候也要考虑 代码: #include<bits/stdc++.h> using namespace std; ...

  4. C++设计模式之桥接模式

    [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化.考虑装操作系统,有多种配置的计算机,同样也有多款操作系统.如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展 ...

  5. 集成学习之Boosting —— AdaBoost实现

    集成学习之Boosting -- AdaBoost原理 集成学习之Boosting -- AdaBoost实现 AdaBoost的一般算法流程 输入: 训练数据集 \(T = \left \{(x_1 ...

  6. zepto 自定义build

    为啥要自定义build? 一般来说我们都会直接在官网下,但它只包含默认几个的模块,对于移动开发,这些模块有些是需要的,有些则可以不用.所以我们可以根据自己的需要来定制. 下图为zepto包含的模块,其 ...

  7. 2017《Java技术》预备作业02

    1.学习使用Git和码云托管代码 参考资料:如何使用Git和码云 安装Git 在码云注册账号,新建项目,名称为Java-CS01(02)XXX, 一班为CS01,二班为CS02,后三位或两位为姓名缩写 ...

  8. C程序设计-----第2次作业

    作业要求一 (15分) 完成下列编程题目,每次上完课都会增加2-3道题目,并将编程过程记录在博客里,一次PTA作业任选一道题目给出设计思路.流程图.源代码和错误记录,其他题目可只给出设计思路.源代码和 ...

  9. vue中去掉url地址栏中的#符号

    要去掉vue中访问地址中的#符号可以在路由器中设置路由模式为history: export default new Router({ mode:'history', routes: [ { path: ...

  10. numpy pandas matplotlib

    import numpy as np import pandas as pd import matplotlib.pyplot as plt ---------------numpy--------- ...