コードイグナイター:コントローラー、アクション、URL情報の取得方法
-
20-09-2019 - |
質問
これらの URL があります:
これらの URL からコントローラー名、アクション名を取得する方法。私はCodeIgniterの初心者です。この情報を取得するためのヘルパー関数はありますか
元:
$params = helper_function( current_url() )
どこ $params
のようなものになります
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
他のヒント
あなたがこれを行う必要がある代わりに、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::$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
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];
}