Codeigniter には、実は見落としがちな優れたコントローラー層処理方法があります
それが今回簡単に紹介するremapです。
実際、CI の URL 制御メソッドでは、例えば:
example.com/index.php/blog/comments/
このフォームでは、ブログがコントローラーであり、コメントがメソッドです。
別の例は、次のようなパラメーターの受け渡しです:
example.com/index.php/products/shoes/sandals/123
サンダル/123 は、渡される 2 つのパラメーターです。
URI の 2 番目のフラグメントは、コントローラー内のどのメソッドが呼び出されるかを決定します。 CodeIgniter では、_remap() メソッドを使用してこのルールをオーバーライドできます。
パブリック関数 _remap()
{
// ここにコードをいくつか...
}
注: コントローラーに _remap() というメソッドが含まれている場合、URI に何が含まれているかに関係なく、このメソッドは常に無視されます。このメソッドは、URI フラグメントによって呼び出されるメソッドが決定されるというルールを削除し、メソッド呼び出しのルール (メソッド ルーティング ルール) を再定義できるようにします。
しかし、問題は、マニュアルに記載されていることは何の役に立つのかということです。実際、これには 2 つの用途があります:
1. URL を変更し、メソッドを非表示にします。たとえば、アプリケーションでは、元の URL メソッドは次のようになります。
http://anmsaiful.net/blog/display_successed_message
表示を変更したいメソッドの名前は次のとおりです:
http://anmsaiful.net/blog/成功
ただし、表示は成功しましたが、実際には既存の display_successful_message が呼び出されます
2 この関数を使用して、次のような単純な関数メソッド制御を実行することもできます。 パブリック関数 _remap($method, $params = array())
{
$user_type = $_SESSION['user_type'];
$access_control = $this->validate_access($user_type,$method);
If ($access_control){
$this->$method();
}
他{
$this->show_message();
}
}
まず、ユーザーセッション内のレベル$user_typeを取り出し、引き継ぎメソッドを確認します
validate_access このユーザーにはこのメソッド ($method) を呼び出す権限がありますか
, $access_control==true がある場合、そうでない場合はエラーメッセージが表示されます
ジャッキーロンより抜粋
http://www.bkjia.com/PHPjc/478284.html