これらのURLがあります:
これらのURLからコントローラー名、アクション名を取得する方法。私はCodeIgniter初心者です。この情報を取得するヘルパー関数はありますか
例:
$params = helper_function( current_url() )
$params
は次のようになります
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
RIクラス を使用できます。
$this->uri->segment(n); // n=1 for controller, n=2 for method, etc
また、次の作業を行うように言われましたが、現在はテストできません。
$this->router->fetch_class();
$this->router->fetch_method();
URIセグメントを使用する代わりに、これを行う必要があります。
$this->router->fetch_class(); // class = controller
$this->router->fetch_method();
そうすれば、ルーティングされたURLの背後、サブドメインなどにいる場合でも、常に正しい値を使用していることがわかります。
メソッドは非推奨です。
$this->router->fetch_class();
$this->router->fetch_method();
代わりにプロパティにアクセスできます。
$this->router->class;
$this->router->method;
codeigniterユーザーガイド を参照してください
URIルーティングメソッドfetch_directory()、fetch_class()、fetch_method()
プロパティ
CI_Router::$directory
、CI_Router::$class
、およびCI_Router::$method
がパブリックであり、それぞれのfetch_*()
がプロパティを返すために他に何もしなくなった場合、それらを保持する意味はありません。これらはすべて文書化されていない内部メソッドですが、万が一に備えて後方互換性を維持するために、現時点では廃止することを選択しました。一部を使用している場合は、代わりにプロパティにアクセスできます。
$this->router->directory; $this->router->class; $this->router->method;
別の方法
$this->router->class
追加として
$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
更新
答えは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セグメントは使用しないでください。
このコードをクラスまたはライブラリの任意の場所で使用
$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
$ this-> uri-> segmentを使用している場合、URL書き換えルールが変更されると、セグメント名の一致は失われます。
URLの最後のセグメントは常にアクションになります。次のようにしてください:
$this->uri->segment('last_segment');