2013-05-15 3 views
3

Я хотел бы знать, какой маршрут выполняется в соответствии с текущим URL-адресом в методе beforeRoute в Fat Free Framework.Получить информацию о маршруте, выполняемом в Fat Free v3

Другими словами, могу ли я получить класс и какой метод будет выполнен? У меня была информация о шаблоне (URL) в переменной PATTERN, но я не знаю, какой класс и метод будут выполняться для этого PATTERN, как показано в route.ini.

Пример моих routes.ini:

GET /admin=Controllers\Admin\Admin->index 

В этом случае я хотел бы найти, что класс Controllers\Admin\Admin и метод индекса.

Я нашел, как получить класс:

get_class($this) 

Но я не нашел, как получить имя метода. Пожалуйста, помните, что мне нужно получить имя метода из метода beforeRoute.

ответ

5

Я вот это решение, это может помочь кому-то.

Чтобы получить имя метода, который будет выполняться в маршруте:

$hive = $f3->hive(); 
$tmp = explode('->',$hive['ROUTES'][$f3->get('PATTERN')][3][$hive['VERB']][0]); 

Так $ TMP [0] будет содержать имя класса и $ TMP [1] будет containt де имя метода.

0

короткий и сладкий вариант

$request = $this->f3->get('PARAMS.0'); 

, то вы можете проверить, если запрос на $ имеет то, что вы ищете

Пример

if(!$this->f3->exists('SESSION.userId')){ 
    if (!$this->strpos($request,'login')) { 
     $this->f3->reroute('/login'); 
     exit; 
    } 
} 

Подробнее о PARAM

Первый индекс массива PARAM содержит URI, оттуда PARAM будет содержать любые переменные запроса маршрута.

Пример URL: http://localhost/user/edit/@id/@whatever

PARAMS[0]=/user/edit/foo/bar 
PARAMS[id]=foo 
PARAMS[whatever]=bar