[Codeigniter-users] コントローラー内の再マップ(_remap)

Back to archive index

Kenichi Ando(Neo,Inc) ando****@neo-n*****
2007年 12月 5日 (水) 20:20:52 JST


bossatamaです。

再マップ(_remap)は便利で深みのある機能ですね。
他のフレームワークで同様の機能をお知りの方がみえましたら
その活用方法をご教授頂きたい。

<?php
class Hello extends Controller {

	function index()
	{
		echo 'Hello World!';
	}

	function comments()
	{
		echo 'Look at this!';
	}
	function _remap($method)
	{
	    if ($method == 'test')
	    {
	        echo $method;
	    }
	    else
	    {
	        echo "default remap!";
	    }
	}
}
?>

http://localhost/CodeIgniter/index.php/hello/
http://localhost/CodeIgniter/index.php/hello/index/
どちらも表示は「default remap!」
index()がオーバーライドされます。

http://localhost/CodeIgniter/index.php/hello/test/
は引数が入り、「test」と表示されます。

「Hello World!」は表示されることはありません。

そこで問題は、index()でクラスやヘルパーの読み込みを
行った場合でも、_remapを行うと、オーバーライドされ
index()が内容は無視されます。

http://userguide.cilab.info/general/controllers.html#remapping
マニュアルにある通り、
「独自のメソッドルーティングルールを定義することができます。」
がキーワードだと思います。

デフォルトindex()でさえ書き換えることが可能とはさすがCI
で、深みがあります。が、その活用法となるとパッと思い浮かびません。
もっとわかりやすくお手本が掲示できるといいかもしれないですね。

//bossatama




Codeigniter-users メーリングリストの案内
Back to archive index