コントローラーをトリガーしたセグメントの深さをコントローラー内で取得しようとしています。私は、コントローラ/データ/ something.phpコードイグナイターコントローラーURIセグメント
class Something extends CI_Controller {
public function index()
{
$depth = ???; // should be 2
}
}
は私が行くことができるので、セグメントをカウントすることは無関係だろう
www.domain.com/data/somethingを通じてロードしてい :例えば
To: www.domain.com/data/something/anotherthing/
、まだ以前のコントローラを実行しますが、深さが2
ままにしてくださいどうすればいいのでしょうか?明確にする
EDIT :
私は(カスタムルーティングを無視して)コントローラをトリガし、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);
}
問題は私にはないです
として追加:私はそれをしたいので、
がSOLUTION親コントローラに__FILE__を使用したいです答え
ハァッ:
CIのルートを使用することを示唆しているホルヘさんのコメント@見た後、私は簡単な解決策を見つけましたか?私は理解していない、あなたはすべてのURIの要素が(そしてそれらを数えますか?それにはCIの機能があります。そうでなければ、あなたは何を意味するのか分かりません。 – Jakub
CIルートを使用できます。 –
@Jakub私はこれについてCIで何も見つかりませんでした – galchen