кодовый блок зажигания - PullRequest
       5

кодовый блок зажигания

0 голосов
/ 17 октября 2011

Я пытаюсь получить глубину сегмента, которая запустила контроллер внутри моего контроллера.

например: у меня есть контроллеры / data / кое-что. Php

class Something extends CI_Controller {
    public function index()
    {
        $depth = ???;   // should be 2
    }
}

будет загружаться черезwww.domain.com/data/something

подсчет сегментов не имеет значения, поскольку я могу перейти по адресу: www.domain.com/data/something/anotherthing/

и по-прежнему запускать предыдущийконтроллер, но глубина должна оставаться 2

есть идеи, как это можно сделать?

РЕДАКТИРОВАТЬ , чтобы уточнить:

я хочу глубину деталив URI, который вызвал контроллер (игнорируя пользовательскую маршрутизацию).

Я не хочу всех элементов URI, так как может быть больше элементов после контроллера / метода.

Например.domain.com/controller_name/method_name/param1/param2

только первые 2 части сегментов запустили контроллер

, что у меня до сих пор:

public function route_segments()
{
    $path = dirname(BASEPATH) . '/'. APPPATH;
    $request = substr(str_replace('\\','/',__FILE__), strlen($path) - strlen(EXT));
    $request = substr($request, strpos($request, '/'));
    $trigger_path = '';
    for ($i=1, $n = $this->uri->total_segments(); $i<=$n && $trigger_path != $request; $i++){
        $trigger_path .= '/'.$this->uri->segment($i);
    }
    $route_segments = explode('/',trim($trigger_path,'/'));
    return count($route_segments);
}

проблема в том, что я не хочу использовать __FILE__, так как я хочу его в родительском контроллере

РЕШЕНИЕ:

добавлено в качестве ответа

1 Ответ

1 голос
/ 25 июня 2012

я удалил его из поста и добавил как ответ:

увидев комментарий @ Jorge, предлагающий использовать CI-маршруты, я нашел простое решение:

private function get_route_depth()
{
    $this->load->library('router');
    $route_segments = explode('/',trim($this->router->directory,'/'));
    return count($route_segments);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...