fc2ブログ

price-change:blog

色んな情報テンコモリ

CodeIgniter のコントローラにまつわるお話

自分向け補足メモ。

  • URIの第2セグメント、いわゆるメソッド呼び出し部分は、コントローラに _remap() メソッドを追加することで再定義できる!但し、追加すると常に呼び出されるので注意!
  • データ処理済みの出力をさらに処理したい場合は、コントローラに _output() メソッドを追加して処理できる。例えば...
    
    <?php
    class HelloWorld extends Controller {
    
    	function index()
    	{
    		$this->load->view('helloworld_view');
    	}
    
    	function _output($output)
    	{
    		echo $output.'@';
    	}
    
    }
    ?>
    
    とすると、ビューに @ が追記されて表示されるようになる。_remap() メソッド同様、これも常に呼び出されるので注意!
  • メソッドの呼び出しを禁止したい場合は、メソッド名の先頭にアンダースコアを書くこと。すると http://www.example.com/hoge/_foo/ ようなURLにアクセスしても、_foo() メソッドは呼ばれない。
  • コントローラは通常 application/controllers フォルダの中に入れてあるが、ファイルが多くなったりしてフォルダ分け(サブフォルダ)した場合は、http://www.example.com/folder/class/function/ID でアクセスできる。また、URI ルーティング 機能を利用すれば、いじることも可能。
  • コントローラクラスのコンストラクタを使用する場合は、必ず parent::Controller(); で親クラスのコンストラクタを呼び出す。上書きするのを防ぐため。
  • 予約済みのメソッドがあるので注意
スポンサーサイト



テーマ:PHP - ジャンル:コンピュータ

CodeIgniterと.htaccess と私

前回のエントリーで書き忘れていることがありました。

http://www.example.com/hoge/foo/1 は正確には http://www.example.com/index.php/hoge/foo/1 なので、前者のままでは表示されません。.htaccessファイルでrewriteしましょう。


RewriteEngine on
RewriteCond $1 !^(index\.php|css|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

多分これで http://www.example.com/hoge/foo/1 でも表示されるはずです。

テーマ:SEO対策 - ジャンル:コンピュータ