[英]code igniter controller uri segment
我試圖獲取觸發控制器內部控制器的分段深度。
例如:我有controllers / data / something.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__,因為我希望在父控制器中使用它
解:
添加為答案
我從帖子中刪除了它,並將其添加為答案:
在看到@Jorge的建議使用CI路由的評論后,我找到了一個簡單的解決方案:
private function get_route_depth()
{
$this->load->library('router');
$route_segments = explode('/',trim($this->router->directory,'/'));
return count($route_segments);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.