コントローラー
custmers_controller.php
/**
* beforeFilter
*
* @param
* @return void
*/
function beforeFilter() {
/* 処理 */
parent::beforeFilter();
// ajax:json の場合
if ($this->RequestHandler->isAjax()) {
// action が jsonの場合
if ($this->action === "json") {
$this->layout = "ajax";
Configure::write("debug" , 0);
$this->RequestHandler->setContent("json");
$this->RequestHandler->respondAs('application/json; charset=UTF-8');
}
}
}
/**
* index
*
* @param
* @return void
*/
function index() {
$this->set('title_for_layout', '顧客一覧');
}
/**
* json
*
* @param
* @return void
*/
function json() {
$page = $this->params['url']['page'];
$limit = $this->params['url']['rows'];
$sidx = $this->params['url']['sidx'];
$sord = $this->params['url']['sord'];
if(!$sidx) $sidx =1;
$row = $this->Customer->find('count');
$count = $row;
if( $count > 0 ) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit;
if($start <0) $start = 0;
$limit_range = $start.",".$limit;
$sort_range = $sidx." ".$sord;
$ret = $this ->Customer->find('all',array('fields'=>array('Customer.id','Customer.name','Customer.kana')));
$responce->page = $page;
$responce->total = $total_pages;
$responce->records = $count;
$i=0;
foreach($ret as $row){
$responce->rows[$i]['id'] =$row['Customer']['id'];
$responce->rows[$i]['cell'] = array($row['Customer']['id'],$row['Customer']['name'],$row['Customer']['kana']);
$i++;
}
$this->set('customers', $responce);
}
モデル
customers/index.ctp
<script type="text/javascript">
jQuery(document).ready(function(){
//Grid For Master Table
jQuery("#list").jqGrid({
url:'<?php echo $html->url(array("controller" => "customers", "action" => "json")); ?>',
datatype: 'json',
mtype: 'GET',
colNames:['Id','氏名','フリガナ'],
colModel :[
{name:'id', index:'id', width:100},
{name:'name', index:'name', width:200,editable:true},
{name:'kana', index:'kana', width:200,editable:true}
],
rowNum:5,
rowTotal: 2000,
rowList:[5,10,15],
loadonce:true,
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager',
sortname: 'id',
sortorder: 'asc',
multiselect: false,
viewrecords: true,
caption: '顧客一覧',
width:800,
height:500,
loadError : function(xhr,st,err) { jQuery("#rsperror").html("Type: "+st+"; Response: "+ xhr.status + " "+xhr.statusText); }
});
jQuery("#list").jqGrid('navGrid','#pager',{edit:false,add:false,del:false});
});
</script>
customers/json.ctp
<?= $javascript->object($customers); ?>
昨日の夜、仕事してたら目の前に蚊がぷーんと横切る
どっから来たんや
6月に引っ越す前は8階やったから蚊がいなかったけど
今年は2階やから結構被害うける
真夜中2時
蚊を一生懸命追いかける
でも途中で消える蚊
こいつ消える術使うんか?
そして、また現れる
あ、いたっ!
追いかける
また消える
クソーーっ!!
そうやっておちょくられ
それなら
それなら
逆手をとって
現れても
あえて追いかけてやらん!
「あれっ?この人間おいかけてけーへん」って思って
血吸いにきたところを仕留めてやるー
でもそれから現れない
なかなか用心深いやつや
俺も用心して
全身に虫よけスプレーして寝てやったぜ
被害ゼロ
どっから来たんや
6月に引っ越す前は8階やったから蚊がいなかったけど
今年は2階やから結構被害うける
真夜中2時
蚊を一生懸命追いかける
でも途中で消える蚊
こいつ消える術使うんか?
そして、また現れる
あ、いたっ!
追いかける
また消える
クソーーっ!!
そうやっておちょくられ
それなら
それなら
逆手をとって
現れても
あえて追いかけてやらん!
「あれっ?この人間おいかけてけーへん」って思って
血吸いにきたところを仕留めてやるー
でもそれから現れない
なかなか用心深いやつや
俺も用心して
全身に虫よけスプレーして寝てやったぜ
被害ゼロ

X2サーバーでcakePHP1.3.3導入メモ(DB:MySQL5.0.22)
1..構成
よりセキュアな環境のため、公開ディレクトリとフレームワークのディレクトリを分ける
cakePHPの/app/webrootを/public_htmlに設置し、それ以外のファイルを/public_htmlより上位に設置
/ドメイン名
/public_html ←/app/webroot下
/cake ←/app/webroot以外
2.フレームワーク参照設定
/public_html/index.phpを修正
/**
* The full path to the directory which holds "app", WITHOUT a trailing DS.
*
*/
if (!defined('ROOT')) {
// define('ROOT', dirname(dirname(dirname(__FILE__))));
define('ROOT', DS.'home'.DS.'ユーザ名'.DS.'ドメイン名'.DS.'cake');
}
/**
* The actual directory name for the "app".
*
*/
if (!defined('APP_DIR')) {
//define('APP_DIR', basename(dirname(dirname(__FILE__))));
define('APP_DIR', 'app');
}
3.mod_rewriteの設定
特に無しでOK
4.必要に応じてapp/tmp以下のパーミッション設定(755)
5.DB作成
6.DB接続設定
/cake/cake/app/config/database.php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '', ←localhostでなくサーバーのホスト名
'login' => '', ←
'password' => '', ←
'database' => '', ←
'prefix' => '',
'encoding' => 'utf8',
);
var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
);
}
1..構成
よりセキュアな環境のため、公開ディレクトリとフレームワークのディレクトリを分ける
cakePHPの/app/webrootを/public_htmlに設置し、それ以外のファイルを/public_htmlより上位に設置
/ドメイン名
/public_html ←/app/webroot下
/cake ←/app/webroot以外
2.フレームワーク参照設定
/public_html/index.phpを修正
/**
* The full path to the directory which holds "app", WITHOUT a trailing DS.
*
*/
if (!defined('ROOT')) {
// define('ROOT', dirname(dirname(dirname(__FILE__))));
define('ROOT', DS.'home'.DS.'ユーザ名'.DS.'ドメイン名'.DS.'cake');
}
/**
* The actual directory name for the "app".
*
*/
if (!defined('APP_DIR')) {
//define('APP_DIR', basename(dirname(dirname(__FILE__))));
define('APP_DIR', 'app');
}
3.mod_rewriteの設定
特に無しでOK
4.必要に応じてapp/tmp以下のパーミッション設定(755)
5.DB作成
6.DB接続設定
/cake/cake/app/config/database.php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => '', ←localhostでなくサーバーのホスト名
'login' => '', ←
'password' => '', ←
'database' => '', ←
'prefix' => '',
'encoding' => 'utf8',
);
var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
);
}