搜尋

首頁  >  問答  >  主體

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層實現

世界只因有你世界只因有你2739 天前681

全部回覆(1)我來回復

  • 習慣沉默

    習慣沉默2017-05-19 10:10:38

    經過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)));
    }

    回覆
    0
  • 取消回覆