コードイグナイター:コントローラー、アクション、URL情報の取得方法

StackOverflow https://stackoverflow.com/questions/2062086

  •  20-09-2019
  •  | 
  •  

質問

これらの URL があります:

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

元:

$params = helper_function( current_url() )

どこ $params のようなものになります

array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
役に立ちましたか?

解決

あなたはURIクラスのrel="noreferrer">

$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ユーザガイド

  

fetch_directory URIルーティング方法()、FETCH_CLASS()、fetch_method()

     

プロパティCI_Router::$directoryCI_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 セグメントは使用しないでください。

あなたがます$ this-> uri->セグメントを使用する場合のURLは、ルールの変更を書き換える場合は、

、、セグメントの名前の一致は失われます。

をクラスやライブラリ内の任意の場所にこのコードを使用

    $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

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

$this->uri->segment('last_segment');
$this->router->fetch_class(); 
コントローラ内の

// fecthクラスクラス     の$ this - > router-> fetch_method();

//メソッド

コントローラクラスは、任意の機能を動作していない。

私は

次のスクリプトを使用して、あなたにお勧めします
global $argv;

if(is_array($argv)){
    $action = $argv[1];
    $method = $argv[2];
}else{
    $request_uri = $_SERVER['REQUEST_URI'];
    $pattern = "/.*?\/index\.php\/(.*?)\/(.*?)$/";
    preg_match($pattern, $request_uri, $params);
    $action = $params[1];
    $method = $params[2];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top