Kohana RegEx: маршрутизация и чувствительность к регистру - PullRequest
1 голос
/ 28 декабря 2011

Я хочу построить маршрут без учета регистра на примере Kohana 3.2

(с сайта Kohanas):

Route::set('sections', '<directory>(/<controller>(/<action>(/<id>)))',
array(
    'directory' => '(admin|affiliate)'
))
->defaults(array(
    'controller' => 'home',
    'action'     => 'index',
));

будет работать с: example.com/admin/home/index, но не с: example.com/Admin/home/index(заглавная 'A').

как я могу решить эту проблему?И я не хочу писать что-то вроде: 'directory' => '([Aa]dmin|[Aa]ffiliate)' это "неправильно".

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Вот более хороший пример метода перегрузки:

<?php

/* APPPATH/classes/route.php */

class Route extends Kohana_Route {

    public static function compile ( $uri, array $regex = NULL ) {
        if ( ! is_string( $uri ) ) { return; }
        return parent::compile( $uri, $regex ) . 'i';
    }

}

Источник: https://gist.github.com/2045349

2 голосов
/ 28 декабря 2011

Вы можете перегрузить Route :: compile и вернуть parent::compile($uri, $regex).'i'; или передать strtolower(Request::detect_uri()) в Request :: factory () в index.php, если вы хотите, чтобы все маршруты чувствительны к регистру.

Или, если вы хотите, чтобы этот маршрут не учитывал регистр, вы можете сделать его лямбда / обратным вызовом, в котором вы используете strtolower ().

...