search

Home  >  Q&A  >  body text

yii2 - (php layer only) How YAF is compatible with YII's [hump action becomes minus sign] url routing rules

Background description:
1. In yii, there are the following Controller

class PayController extends Controller
{
    public function actionIosCallback()
    {
        echo 'hello yii';
    }
}
访问www.XXX.com/pay/ios-callback,则页面显示hello yii

2. In yaf, there are the following Controller

class PayController extends Yaf_Controller_Abstract{
    public function actionIosCallback()
    {
        echo 'hello yaf';
    }
}
访问www.XXX.com/pay/iosCallback,则页面显示hello yaf

Problem description:
3.Ask how yaf is compatible with yii and access www.XXX.com/pay/ios-callback, then the page will display hello yaf

Note: Currently, the solution that I can think of is to rewrite the URL in the Nginx layer, but I think it is not the best solution, so I only discuss the PHP layer implementation

世界只因有你世界只因有你2775 days ago706

reply all(1)I'll reply

  • 習慣沉默

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

    After studying the YII source code, I finally found the rules for rewriting routing. The method is as follows

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

    The implementation method is to introduce this rule into the routerShutdown of yaf, so that the routing rules can be rewritten to achieve the purpose of displaying hello yaf on the page when accessing www.XXX.com/pay/ios-callback

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

    reply
    0
  • Cancelreply