zoukankan      html  css  js  c++  java
  • TP5 路由使用

     

    这里可以直接从第四条开始看

    原文 http://www.upwqy.com/details/12.html

    1 文档链接

    tp5路由官方文档  https://www.kancloud.cn/manual/thinkphp5/118041

    2 为什么要使用路由 

    对于咱们的pc站来说,如果是在不是用路由的情况下,路径是很长的,看起来就很不友好,

    当然啦,具体为什么要使用路由呢,

    我考虑的是 第一个可读性和友好性上比较好,第二是我们隐藏了自己项目的实际路径,这会对安全性带来帮助。

    这只是我个人的看法。

    3 熟悉官方文档 

    我们要熟悉官方文档  使用的依据肯定是依照文档上来的,我们不可以闭门造车。既然使用tp5就要根据tp5设置的规则来。

    4 开启路由配置

    // 是否开启路由
    'url_route_on'           => true,
    // 路由使用完整匹配
    'route_complete_match'   => true,
    
    // 是否强制使用路由
    'url_route_must'         => true,

    5 定义路由 并测试获取路由参数和?后的参数 

    看一下文档中的路由参数 提供了很多方法开快捷定义路由的,

    我们这里使用

    Route::get() 和Route::post()两种方式来配置路由 

    在路由文件中声明使用路由

    use thinkRoute;

    定义第一个路由 比如

    Route::get('hello','index/test/hello');

    第一个参数是我们实际需要在链接中要访问的地址 ,第二个参数是实际应用要走的module/controller/action

    我们可以在

    index/test/hello

    对应的hello 方法中 echo ''你好';

    访问  域名/hello

    可以看到在浏览器上输出 

    你好

    接下来我们修改一下路由

    Route::get('hello/:id','index/test/hello');

    在hello 方法中 

    dump(input('get.id'));
    dump(input());
    dump(request()->get());
    dump(request()->get('id'));
    dump(request()->param());
    dump(request()->param('id'));
    dump(request()->route());
    dump(request()->route('id'));

    返回结果是依次是

    null
    
    array (size=1)
      'id' => string '10' (length=2)
      
    array (size=0)
      empty
      
    null 
      
    array (size=1)
      'id' => string '10' (length=2)
      
    string '10' (length=2)
    
    array (size=1)
      'id' => string '10' (length=2)
      
    string '10' (length=2)

    其中 

    dump(input('get.id'));
    dump(request()->get());
    dump(request()->get('id'));

    这三种获取参数的方式 ,在定义了路由,并且路由中定义了:id 这种变量时 是获取不到参数的

    另外下面这种方式可以获取到参数

    public function hello($id)

    这里输出$id也可以获取到值。但是这里的 $id 必须要和 路由中的 :id 对应 变量必须相同

    另外如果 在链接后面跟上参数

    比如  域名/hello/10?name=123

    使用上面的获取参数的方法 来获取name值 是都可以获取到值的,所以这里我们就需要需要合适的获取参数方法了

    我们测试一下 

    dump(input());
    dump(request()->get());
    dump(request()->route());
    dump(request()->param());
    array (size=2)
      'name' => string '123' (length=3)
      'id' => string '10' (length=2)
    array (size=1)
      'name' => string '123' (length=3)
    array (size=1)
      'id' => string '10' (length=2)
    array (size=2)
      'name' => string '123' (length=3)
      'id' => string '10' (length=2)

    如果我们只想要自己定义的路由变量 就需要使用 

    request()->route()

    获取参数 

    还有我们看到其中的 

    request()->get()

    获取的参数只获得了我们 ? 后面的参数 ,并且在上面的没有添加name时是没有获取到参数的

    所以路由里面的:id这种变量 我们不能使用

    request()->get()

    来获得参数

    还有强调一下 我们最好不要用能获取?后面参数的方法来获取参数。如果实在是需要获取。我们最好能够准备的指定我们需要获取的参数变量

    6 网页上使用路由链接

    我们能够定义路由,并实际的访问了 我们看一下 在网页上怎么运用

    你可能会说,既然我们定义了路由。那么直接上链接上拼接上链接不就可以了

    我想说 这样是万万不好的

    比如说我的上面的链接 /hello/:id  在链接上直接输入 

    这样的。当前这可以访问。但是这样的链接在运营的过程中使用的越来越多 如果哪天看着这个链接不顺眼了。或者说,老板找你,把这个链接改一下。难道你要一个一个的去找去改吗,这样的很麻烦。

    既然说到这里了。必然会有解决办法的

    我们可以看官方文档。url生成

    我们在网页链接上直接按照原来没有定义路由时的思路来 写链接 

    tp5 生成链接的方式是使用url 

    {:url('index/test/hello?id='.$v['id'])}//这个是循环数据时拼接变量
    
    
    //这里直接使用a标签会被解析 所以用汉字代替了
    a标签  href="{:url('index/article/details?id=1')}">
        我是一个链接
    /a标签
    打开网页 我们把鼠标放到标题上 可以看到浏览器下方的状态栏上 实际的链接就是我们需要的。域名/hello/1.html
    
    这里在网页上直接生成的链接会带有后缀html 没有这个html也是可以访问的。
    现在我的链接是不是我们想要的理想效果了
    
    我们这里改一下路由
    Route::get('news/:id','index/test/hello');

    刷新页面 是不是链接已经更新了 域名/news/1.html

    ok 测试暂时告一段落 这样基本够平时的使用的。以后有发现会及时更新的

  • 相关阅读:
    KVC之-setValue:forKey:方法实现原理与验证
    李洪强iOS开发之iOS社区收集
    跟着百度学PHP[15]-会话控制session的工作机制
    代码审计学习之文件操作漏洞
    中间人攻击——ARP欺骗的原理、实战及防御
    跟着百度学PHP[14]-PDO的预处理语句2
    跟着百度学PHP[14]-PDO的预处理语句1
    跟着百度学PHP[14]-PDO之Mysql的事务处理2
    跟着百度学PHP[14]-PDO之Mysql的事务处理1
    跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL
  • 原文地址:https://www.cnblogs.com/wqy415/p/7711009.html
Copyright © 2011-2022 走看看