Maison > Questions et réponses > le corps du texte
Description de l'arrière-plan :
1. Dans yii, il y a les contrôleurs suivants
class PayController extends Controller
{
public function actionIosCallback()
{
echo 'hello yii';
}
}
访问www.XXX.com/pay/ios-callback,则页面显示hello yii
2. Dans yaf, il y a les contrôleurs suivants
class PayController extends Yaf_Controller_Abstract{
public function actionIosCallback()
{
echo 'hello yaf';
}
}
访问www.XXX.com/pay/iosCallback,则页面显示hello yaf
Description du problème :
3. Demandez comment yaf est compatible avec yii et accédez à www.XXX.com/pay/ios-callback, puis la page affichera bonjour yaf
Remarque : Actuellement, la solution à laquelle je peux penser est de réécrire l'URL dans la couche Nginx, mais je pense que ce n'est pas la meilleure solution, je ne discuterai donc que de l'implémentation de la couche PHP
習慣沉默2017-05-19 10:10:38
Après avoir étudié le code source de YII, j'ai enfin trouvé les règles de réécriture du routage. La méthode est la suivante
.str_replace(' ', '', ucwords(str_replace('-', ' ', $action)))
La méthode d'implémentation consiste à introduire cette règle dans le routerShutdown de yaf, afin que les règles de routage puissent être réécrites pour atteindre l'objectif d'afficher hello yaf sur la page lors de l'accès à 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)));
}