Magento 中 路由具体写法 */*/* 路由具体分析如下:

    1. $routePieces = explode('/', $data);
    2. $route = array_shift($routePieces);
    3. if ('*' === $route) {
    4. $route = $this->_getRequest()->getRouteName();
    5. }
    6. $this->_setRouteName($route);
    7. $controller = '';
    8. if (!empty($routePieces)) {
    9. $controller = array_shift($routePieces);
    10. if ('*' === $controller) {
    11. $controller = $this->_getRequest()->getControllerName();
    12. }
    13. }
    14. $this->_setControllerName($controller);
    15. $action = '';
    16. if (!empty($routePieces)) {
    17. $action = array_shift($routePieces);
    18. if ('*' === $action) {
    19. $action = $this->_getRequest()->getActionName();
    20. }
    21. }
    22. $this->_setActionName($action);

    可以看到如果路由是 */*/* 的模式的话,会自动会获取对应的值,也就是

    • $route = $this->_getRequest()->getRouteName();
    • $controller = $this->_getRequest()->getControllerName();
    • $action = $this->_getRequest()->getActionName();

    具体代码在 vendor/magento/framework/Url.php 第 506 行