web-dev-qa-db-ja.com

CodeIgniter:コントローラー、アクション、URL情報を取得する方法

これらのURLがあります:

これらのURLからコントローラー名、アクション名を取得する方法。私はCodeIgniter初心者です。この情報を取得するヘルパー関数はありますか

例:

$params = helper_function( current_url() )

$paramsは次のようになります

array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
117
noname.cs

RIクラス を使用できます。

$this->uri->segment(n); // n=1 for controller, n=2 for method, etc

また、次の作業を行うように言われましたが、現在はテストできません。

$this->router->fetch_class();
$this->router->fetch_method();
207
Sampson

URIセグメントを使用する代わりに、これを行う必要があります。

$this->router->fetch_class(); // class = controller
$this->router->fetch_method();

そうすれば、ルーティングされたURLの背後、サブドメインなどにいる場合でも、常に正しい値を使用していることがわかります。

131
Phil Sturgeon

メソッドは非推奨です。

$this->router->fetch_class();
$this->router->fetch_method();

代わりにプロパティにアクセスできます。

$this->router->class;
$this->router->method;

codeigniterユーザーガイド を参照してください

URIルーティングメソッドfetch_directory()、fetch_class()、fetch_method()

プロパティCI_Router::$directoryCI_Router::$class、およびCI_Router::$methodがパブリックであり、それぞれのfetch_*()がプロパティを返すために他に何もしなくなった場合、それらを保持する意味はありません。

これらはすべて文書化されていない内部メソッドですが、万が一に備えて後方互換性を維持するために、現時点では廃止することを選択しました。一部を使用している場合は、代わりにプロパティにアクセスできます。

$this->router->directory;
$this->router->class;
$this->router->method;
27
lumos0815

別の方法

$this->router->class
12
Luis Chanferoni

追加として

$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
10
Starx

更新

答えは2015年に追加されましたが、現在、次のメソッドは廃止されています

$this->router->fetch_class();  in favour of  $this->router->class; 
$this->router->fetch_method(); in favour of  $this->router->method;

こんにちは、次のアプローチを使用する必要があります

$this->router->fetch_class(); // class = controller
$this->router->fetch_method(); // action

この目的のために、これを使用するには、フックをCI_Controllerから拡張する必要があり、チャームのように機能します。uriセグメントは使用しないでください。

5

このコードをクラスまたはライブラリの任意の場所で使用

    $current_url =& get_instance(); //  get a reference to CodeIgniter
    $current_url->router->fetch_class(); // for Class name or controller
    $current_url->router->fetch_method(); // for method name
3
Aslam Patel

$ this-> uri-> segmentを使用している場合、URL書き換えルールが変更されると、セグメント名の一致は失われます。

3
monsterm

URLの最後のセグメントは常にアクションになります。次のようにしてください:

$this->uri->segment('last_segment');
1
PrakashG