Category: CodeIgniter

11月 13 2011

CodeIgniter URL コントローラー

sixcore でCodeIgniterを使おうとしたら上手くURLを捌いてくれない。。。。。

どんなURLでのTOPページへ行ってしまう!!

phpのバージョンかと思い5.33にあげても駄目。。。

原因は$_SERVERの値だった!!

CodeIgniterは$_SERVER[PATH_INFO]の値を元に読み込むContollorを決めるようだ。

この値がないが原因!!

$_SERVER['ORIG_PATH_INFO']があるのでそれを代入してやることで対応

if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
{
    $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
}

これを

system/core/URI.php の120行目あたり

$path = (isset($_SERVER[$uri])) ? $_SERVER[$uri] : @getenv($uri);

の上に記入

11月 01 2011

CodeIgniter third_party

CodeIgniterでthird_partyディレクトリを使ってみる。

third_partyとは「アプリケーションパッケージ=配布を容易にするために それ自身の単一ディレクトリ内にライブラリ、モデル、ヘルパー、コンフィグ、そして言語ファイルをすべて備えたリソースの集合の配置を推奨」

仕組みがわかれば意外と簡単で便利かも
ユーザーガイドの構成通りthird_partyにfoo_barディレクトリを配置する
サブディレクトリは使うものだけで良いようだ。

/application/third_party/foo_bar
└config/
└helpers/
└language/
└libraries/
└models/
└views/
このthird_partyを使うには

//まずadd_package_pathでthird_party/foo_bar/へパスを通す
$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
//次にライブリのロード
//このfoo_barは”third_party/foo_bar/libraries/foo_bar.php”
$this->load->library('foo_bar');

続いてthird_party/foo_bar/libraries/foo_bar.php側
このfoo_bar.phpがコントローラーってイメージですね。

class Foo_bar{
    function __construct
    {
        // インスタンスを生成
        $CI =& get_instance();
        // 以降class Foo_barでの$CI->loadは
        // third_party/foo_bar/libraries/foo_bar以下の
        // model・ libraryなどを読み込む
    }
}

//終わったらremoveでパスを解除
$this->load->remove_package_path(APPPATH.’third_party/foo_bar/’);

model・ library以外help viewも同じ用に使えるのようなので便利だと思う。

11月 01 2011

CodeIgniter xajax

CodeIgniter 2.0.3へXajax 0.6 beta1を導入する
まずダウンロードhttp://www.xajax-project.org/en/download/

解凍すると [test] [xajax_core] [xjax_js] [xajax_plugins] copyright.inc.phpがあるので
[xajax_core]を[xajax]に変更してapplication/libraries/へ配置
[xajax_js]を配置index.phpと同じ場所でOK
xajax/xajax.inc.phpをxajax/xajax.phpへ変更
xajax_jsを他へ配置した場合は735行目あたりの
$sJsFile = ‘xajax_js/xajax_core.js’;を環境に合わせて変更
その時はxajax/plugin_layer/xajaxDefaultIncludePlugin.inc.phpの280行目あたりに
array($this->_getScriptFilename(‘xajax_js/xajax_core.js’), ‘xajax’);
という部分が4つほどあるのでこのパスも変更

class Test extends My_Controller {
  function __construct() {
    //ライブラリを読み込む
    $this->load->library('xajax');
    //ここにxajaxで実行したいfunctionを登録('test_function')
    $this->xajax->register(XAJAX_FUNCTION, array(&$this, 'test_function'));
    $this->xajax->processRequest();
  }

   function index(){
    //登録functionの呼び出しはxajax_をつける
    echo '$this->xajax->getJavascript(base_url().'assets/');
    echo '
';
  }

  // xajaxで呼び出されて
  //id="test_area"へ'xajaxで表示'を表示
  function test_function(){
    $res = new xajaxResponse();
     $res->assign('test_area', 'innerHTML', 'xajaxで表示');
  }

≪参考サイト≫
CodeIgniterでxajaxを利用する方法
CodeIgniter 1.6.3 と xajax 0.5 rc2 を組み合わせてみた

10月 06 2011

cssやjsファイルを圧縮するCodeIgniterライブラリー

cssやjsファイルを圧縮して1ファイルにしてくれる便利ライブラリー
https://github.com/bstrahija/assetsからダウンロード

解凍するとconfig、helpers、librariesのディレクトリができる
そのうちconfig/autolod.phpは書き換えてなければ上書きしてもいいが以下の部分を変更する

//$autoload['libraries'] = array();
$autoload['libraries'] = array('assets');

//$autoload['helper'] = array();
$autoload['helper'] = array('url', 'file', 'directory', 'string', 'assets');

//$autoload['config'] = array();
$autoload['config']  = array('assets');

autoloadのlibraries,helper,configを変更

デフォルトではドメイン直下のassetsの
assets/css
assets/js
が読み込まれ、
assets/cachにキャッシュされる。

その辺を変更したい場合はapplication/config/assets.phpを変更。

viewでdisplay_css display_jsをセット



≪参考サイト≫
Javascript・CSSを圧縮・結合するCodeIgniterライブラリ「Simple assets」

10月 06 2011

CodeIgniterでの.htaccess例


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

RewriteCond $1 !^(index\.php|robots\.txt|file)でindex.php・robots.txt とfileディレクトリへのアクセスを除外。
それ以外はRewriteRule ^(.*)$ /index.php/$1 [L] 全てindex.phpですよ。ってことです。

これでfile/image やfile/cssやfile/jsに画像・css・jsを配置しておけばOK