Я пытаюсь получить глубину сегмента, которая запустила контроллер внутри моего контроллера.
например: у меня есть контроллеры / 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__, так как я хочу его в родительском контроллере
РЕШЕНИЕ:
добавлено в качестве ответа