yii2的URL解析和生成

以下内容来自于中文文档;http://www.yiifans.com/yii2/guide/runtime-url-handling.html
因为写邮箱找回密码里面可以用到,所以拿出来参考,也顺便总结下自己写这方面的代码思路:找回密码页面是./index.php?r=admin%2Fpublic%2Fseekpassword,用ActiveForm组建获取对应的账户和邮箱,

传递到后台的模型的admin.php,打印数据为Array ( [adminuser] => admin [adminemail] => ***@163.com ),校验对应的账户和邮箱是否匹配(用了scenario = "seekpass",写了对应的方法validateEmail来返回是否匹配)

if ($this->load($data) && $this->validate()) {
            //做点有意义的事
            $time = time();
            $token = $this->createToken($data['Admin']['adminuser'], $time);
            $mailer = Yii::$app->mailer->compose('seekpass', ['adminuser' => $data['Admin']['adminuser'], 'time' => $time, 'token' => $token]);
            $mailer->setFrom("***@163.com");
            $mailer->setTo($data['Admin']['adminemail']);
            $mailer->setSubject("**商城-找回密码");
            if ($mailer->send()) {
                return true;
            }
        }
        return false;

然后写了createToken方法,里面带用户名和时间戳也可以加上ip,可以组装进行多次md5加密得到一个唯一的token值,['adminuser' => $data['Admin']['adminuser'], 'time' => $time, 'token' => $token]这些值都会被传到mail目录下的seekpass.php,里面加上链接:

<?php $url = Yii::$app->urlManager->createAbsoluteUrl(['admin/manage/mailchangepass', 'timestamp' => $time, 'adminuser' => $adminuser, 'token' => $token]); ?>
<p><a href="<?php echo $url; ?>"><?php echo $url; ?></a></p>

后面的处理就都是在后台的控制器ManageController.php里面的mailchangepass方法进行,处理的方法就是时间相减的值(时间限制,一般可以为5分钟),和token值的对比.验证通过就可以调到修改密码页面了


URL 管理
Yii中的URL管理概念很简单。URL管理基于这样的前提:应用程序的每个地方都使用内部路由和参数。框架然后将路由解释为URLs,或者相反,这取决于URL管理的配置。这样的方式允许你通过修改一个配置项就可以更改整站的URL行为,而不需要改动任何的代码。


 


内部路由
Yii应用处理的内部路由通常指的是路由及参数。 每个控制器及其动作都有对应的内部路由,比如site/index 或 user/create。 前一例中的site 被称为 controller ID (控制器ID),而 index 被称为 action ID(动作ID)。 第二例中的user 是控制器ID,create 是动作ID。如果控制器在 module (模块)内部, 内部路由则以模块ID开头,比如 blog/post/index 是 blog 模块的 post 控制器的 index 动作。


 


创建 URLs
为站点创建URL最重要的规则就是始终使用 URL 管理器,URL 管理器是一个名叫 urlManager 的内置应用组件。这个组件在Web应用和控制台应用中都可以通过 \Yii::$app->urlManager. 组件提供以下两种创建 URL 的方法:


createUrl($params)
createAbsoluteUrl($params, $schema = null)
createUrl() 方法根据应用根目录的相对位置生成URL,比如 /index.php/site/index/。 createAbsoluteUrl() 方法生成的是绝对路径 URL ,即以主机名和协议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值