• 路由


    路由概念

    按照我的理解来说,路由就是让传输进行的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名:控制器类名:具体的方法名

  • 相关阅读:
    Nginx的安装与部署
    什么是Nginx?为什么使用Nginx?
    spark 中的RDD编程 -以下基于Java api
    java反射
    POST-GET请求
    Spring Boot 专栏
    【Shiro】Apache Shiro架构之身份认证(Authentication)
    maven项目如何启动运行---发布到tomcat中
    一位资深程序员大牛给予Java初学者的学习路线建议
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
  • 原文地址:https://www.cnblogs.com/eenio/p/10461445.html
Copyright © 2020-2023  润新知