11月
13
2011
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ディレクトリを使ってみる。
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 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ファイルを圧縮して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
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