yii2 - (仅php层)YAF如何兼容YII的【驼峰action变成减号】的url路由规则

查看:257
本文介绍了yii2 - (仅php层)YAF如何兼容YII的【驼峰action变成减号】的url路由规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

背景描述:
1.在yii中,有以下Controller

class PayController extends Controller
{
    public function actionIosCallback()
    {
        echo 'hello yii';
    }
}

访问www.XXX.com/pay/ios-callback,则页面显示hello yii

2.在yaf中,有以下Controller

class PayController extends Yaf_Controller_Abstract{
    public function actionIosCallback()
    {
        echo 'hello yaf';
    }
}

访问www.XXX.com/pay/iosCallback,则页面显示hello yaf

问题描述:
3.问yaf如何兼容yii,实现访问www.XXX.com/pay/ios-callback,则页面显示hello yaf

注:目前个人能想到的方案为在Nginx层改写url可以实现,但觉得不是最好方案,故仅讨论php层实现

解决方案

经过对YII源码的研究,终于找到了它改写路由的规则了,方式如下

str_replace(' ', '', ucwords(str_replace('-', ' ', $action)))

实现方法为将此规则引入到yaf的routerShutdown,即可改写路由规则,达到访问www.XXX.com/pay/ios-callback,则页面显示hello yaf的目的

public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
$request->controller = str_replace(' ', '', ucwords(str_replace('-', ' ', $request->controller)));
$request->action = str_replace(' ', '', ucwords(str_replace('-', ' ', $request->action)));
}

这篇关于yii2 - (仅php层)YAF如何兼容YII的【驼峰action变成减号】的url路由规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆