Маршрутизаторы Regex в Zend Framework, как сделать слияние этих маршрутизаторов? - PullRequest
0 голосов
/ 09 августа 2009

Мне нужно знать, как я могу объединить эти маршрутизаторы в один? Я хочу иметь только один маршрутизатор вместо этих. Я ценю любой ответ .:)

        $route = new Zend_Controller_Router_Route_Regex(
        '([a-z]{2})/(\w+)/(\w+)/(\w+)',
        array('controller'=>'index',
            'action' => 'index',
            'module'=>'default',
            'lang'=>$lang
        ),
        array(
            1=>'lang',
            2=>'module',
            3=>'controller',
            4=>'action'
        )
    );
    $router->addRoute('default_lang_action', $route);

    $route = new Zend_Controller_Router_Route_Regex(
        '([a-z]{2})/(\w+)/(\w+)',
        array('controller'=>'index',
            'action' => 'index',
            'module'=>'login',
            'lang'=>$lang
        ),
        array(
            1=>'lang',
            2=>'module',
            3=>'controller'
           )
    );
    $router->addRoute('default_lang_con', $route);

    $route = new Zend_Controller_Router_Route_Regex(
        '([a-z]{2})/(\w+)',
        array('controller'=>'index',
            'action' => 'index',
            'module'=>'default',
            'lang'=>$lang
        ),
        array(
            1=>'lang',
            2=>'module'
        )
    );
    $router->addRoute('default_lang_mod', $route);

    $route = new Zend_Controller_Router_Route_Regex(
        '([a-z]{2})',
        array('controller'=>'index',
            'action' => 'index',
            'module'=>'default',
            'lang'=>$lang
        ),
        array(
            1=>'lang'
        )
    );
            $router->addRoute('default_lang', $route);

1 Ответ

2 голосов
/ 10 августа 2009

Итак, вместо четырех маршрутов, которые у вас есть сейчас, вам нужен один маршрут, в котором последние три параметра являются необязательными? Попробуйте это регулярное выражение:

'([a-z]{2})(?:/(\w+)(?:/(\w+)(?:/(\w+))?)?)?'
...