开发者

How not to repeat myself in Kohana 3's routes?

开发者 https://www.devze.com 2023-01-14 02:42 出处:网络
Let\'s say I want to make a system which can afford a multilingual web project. The system will consist of the modules that are put in Kohana\'s standard directory modules. Let\'s say that the standar

Let's say I want to make a system which can afford a multilingual web project. The system will consist of the modules that are put in Kohana's standard directory modules. Let's say that the standard access to the particular language can be done via lang parameter (i.e. somesite.com/en/somepage). The problem is that I have to repeat myself in defining my modules routes prepending each uri with (<lang>). Is there any way to avoid that? I thought about a separate language route decl开发者_C百科aration (for example in bootstap.php file), but I guess it won't solve the problem.

It's all about Kohana 3. Thanks to all.

UPDATE: I think that the way suggested by The Pixel Developer is what one need if some part of the rule in route repeats everywhere.


Move up a level and extend the route class.

http://github.com/kohana/core/blob/master/classes/kohana/route.php#L69

public static function set($name, $uri, array $regex = NULL)
{
    return parent::set($name, '(<lang>)'.$uri, $regex);
}

Not tested, but that's the general idea.


If lang is required in route, why don't you just put it in the default route? Surely that's the easiest way to go about. Something like:

Route::set('default', '<lang>(<controller>(/<action>(/<id>)))', array('lang'=> '[a-z]{2}'))
->defaults(array(
    'controller' => 'somepage',
    'action'     => 'index',
    'lang'       => 'en',
));

Where lang is any 2 letters alphabets which defaults to 'en'.

0

精彩评论

暂无评论...
验证码 换一张
取 消