背景描述:
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層實現
習慣沉默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)));
}