次のURLがあります。
これらのURLからコントローラー名、アクション名を取得する方法。私はCodeIgniterの初心者です。この情報を取得するヘルパー関数はありますか
例:
$params = helper_function( current_url() )
どこの$params
ようなものになります
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
次のURLがあります。
これらのURLからコントローラー名、アクション名を取得する方法。私はCodeIgniterの初心者です。この情報を取得するヘルパー関数はありますか
例:
$params = helper_function( current_url() )
どこの$params
ようなものになります
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
回答:
あなたはURIクラスを使うことができます:
$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の背後やサブドメインなどにいる場合でも、常に正しい値を使用していることがわかります。
modules::run('module/controller/action')
。ロードされたページのルーター情報を表示するだけです。これを克服する方法はありますか?
$this->router
、コードが実行されるクラスは返されますが、オーバーライドでマスクされた実際のルーターは返されません。どちらの回答も、やりたいことに基づいて非常に役立ちます。
$this->router->class
と $this->router->method
の代わりに
メソッドは非推奨です。
$this->router->fetch_class();
$this->router->fetch_method();
代わりにプロパティにアクセスできます。
$this->router->class;
$this->router->method;
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
fetch_module()
呼び出しは、CI 2.1.2では機能しません。/system/router.phpファイルで見つかりません。
更新
回答は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セグメントを使用しないでください。
コントローラクラスが機能していません。
次のスクリプトを使用することをお勧めします
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];
}