124

私はこれらのURLを持っています:

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

元:

$params = helper_function( current_url() )

どこ$params

array (
  'controller' => 'system/settings', 
  'action' => 'edit', 
  '...'=>'...'
)
4

11 に答える 11

227

URIクラスを使用できます:

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

また、次の作業についても言われましたが、現在テストできません。

$this->router->fetch_class();
$this->router->fetch_method();
于 2010-01-14T04:22:37.473 に答える
135

URIセグメントを使用する代わりに、次のようにする必要があります。

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

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

于 2010-01-15T11:44:57.177 に答える
31

メソッドは非推奨になりました。

$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::$classCI_Router::$methodfetch_*()

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

$this->router->directory;
$this->router->class;
$this->router->method;
于 2016-01-05T12:10:13.553 に答える
12

別の方法

$this->router->class
于 2012-12-04T12:57:03.363 に答える
11

追加として

$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
于 2012-01-03T10:24:45.243 に答える
8

アップデート

回答は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セグメントを使うべきではありません

于 2015-05-21T12:28:04.440 に答える
3

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

于 2014-01-24T11:20:07.950 に答える
3

クラスまたはライブラリのどこでもこのコードを使用する

    $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
于 2016-01-20T08:27:42.533 に答える
1

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

$this->uri->segment('last_segment');
于 2019-02-14T10:49:36.300 に答える
-1
$this->router->fetch_class(); 

//fecthクラスコントローラーのクラス$this->router-> fetch_method();

// 方法

于 2018-02-13T03:54:20.333 に答える
-4

コントローラクラスは機能していません。

したがって、次のスクリプトを使用することをお勧めします

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];
}
于 2016-09-05T03:26:50.323 に答える