zoukankan      html  css  js  c++  java
  • 路由

    路由概念

    按照我的理解来说,路由就是让传输进行的url和具体编写的代码的某个方法之间进行正确的匹配,

    symfony官网的解释来说,传入request,得到url,进行routing匹配,传给从controller,执行具体的方法,进行相应的响应.

    定义路由

    两种方法,

    1.annation,使用注释对路由进行定义, 适合比较规范化的类,比如用户control 等类,这样访问的时候就可以通过user/method进行

    2.router.ytml  使用于没有那么标准的,类似于一本字典,将每一个方法都罗列下来

    注意:不能同时使用

    url

    一个是静态url,一个是动态url,这里先进行一个简单的解释

    例,这里要传输页码,这里的requirements是对路由进行限制,不然同一个url可以成功匹配不同的路由

     1 class DefaultController extends Controller
     2 {
     3     /**
     4      * @Route("/page/{page_num}",defaults={"page_num":1},requirements={"page_num"="d+"})
     5      * @Method("POST")     
         * @Template()
    6 */ 7 public function indexAction($page_num) 8 { 9 return array('name' => $page_num); 10 } 11 }

    这里传入page_num参数,defaults设置默认值,requirements对类型进行限制,动态的url

    而如果要是静态的,return 一个固定的数字就是静态url,

    注意:symfony默认去掉最后的/   即传入默认值时只需要page即可,不需要page/

    1.网页一般要提交信息时,在annoation里面进行@Method("方法") 设置相应的方法,post/get,

    ps:需要在前面添加use SensioBundleFrameworkExtraBundleConfigurationMethod;

    2.对于比较复杂的网站,可以在前面添加

    /**
     * @Route("/page")
     */
    //进行简化,之后的路由定义都是在/page目录下面进行定义的

     

    3.ParamConverter 方法,将传入的参数转化为一个类,这样子就可以直接通过这个类的方法来获取各种信息

    use SensioBundleFrameworkExtraBundleConfigurationParamConverter;
    class DefaultController extends Controller
    {
        /**
         * @Route("/index/{page_num}",defaults={"page_num":1},requirements={"page_num"="d+"})
         * @ParamConverter("post",class="ScourgenWebBundle:Post")
         * @Template()
         */
        public function indexAction(Post $post)
        {
            $title =$post->getTitle();
            return array('name' => $title);
        }
    }
    
    //类似这样进行使用即可,

    除此之外,路由还可以在routing.yml当中进行定义,这种方式更为规范,之后也更好进行查找更换操作

    blog_list:                 //路由名称
        path:      /blog/{page}    //路由路径
        defaults:  { _controller: AppBundle:Blog:list, page: 1 } //跳转到哪个Controller,并且可以设置参数默认值
        requirements:          //对于url和路由进行匹配的的限制,即参数的属性限制
            page: 'd+'

     _controller:参数格式  Bundle名:控制器类名:具体的方法名

  • 相关阅读:
    Git 安装部署的详细说明
    jmeter数据库连接异常记录
    安装测试真的有那么简单吗?
    5G通信系统简单介绍
    postman 模拟服务器server
    再来对http协议做个详细认识
    关于Fiddler Everywhere的使用说明
    pom模式+ddt思想+logger+allure 重构jpress
    adb常见异常归类
    DDT思想
  • 原文地址:https://www.cnblogs.com/eenio/p/10461445.html
Copyright © 2011-2022 走看看