あまりにも長い間いろいろ試して判明したのがこれ。
タイトルで終了しますが、CakePHP の bake でコード生成をする際避けるべきデータベーステーブルの名前は、 folders です。
理由はUtility::Folderと名前空間がかぶるから。自動生成つかってなくても、普通にぶつかって一見原因不明のエラーが出ます。
ほかにもモジュール名でかぶりそうなものもありそうですが、ひとまず。
10 Jul 2015
16 Apr 2015
[CakePHP2]モデル内で別のモデルを参照する(追記あり)
別のファイルを参照するのは3通りあるそうです。
と上記では書いてありますが、Model内でも Controller::loadModelは作動する模様。
参照元:から説明を抜粋。
http://stackoverflow.com/questions/980556/can-i-use-one-model-inside-of-a-different-model-in-cakephp
App::import() ファイルを見つけてインポートします(それだけしかしません)。クラスを使用するにはインスタンスを作製する必要があります。 ClassRegistry::init() ファイルをロードして、インスタンスを作製します。何かをロードするにはimportよりもベターです。なぜならCakePHPが通常呼び出しの際に内部で行う手続きも実行されるからです。またクラスネームにエイリアスをつけることができます。便利です。 Controller::loadModel() 前述の ClassRegistry::init() を使用してモデルをロードします。$persistModel を使用したキャッシングにも対応します(する予定です?)。コントローラ内部でのみ動作します。
(追記7/7)やっぱりだめっぽい。以下のやりかたが良いようです。Controller::loadModel('AnotherModel'); $data = $this->AnotherModel->read(null, $id);
$anotherModel = ClassRegistry::init('AnotherModel');
data = $anotherModel->read(null, $id);
6 Mar 2015
[Haskell] CSV Library cassava
確定申告の時期、銀行やらカードやらの明細を自分のソフトで読み込めるように変換してますが、Haskellでやるにはどうしたものかと思いいろいろ検索。
Cassavaというライブラリがあるようです。
Bitstringでなしに、各フィールドの型を決めて読みこめるみたいですが、ひとまず触ってみることにします。
Cassavaというライブラリがあるようです。
Bitstringでなしに、各フィールドの型を決めて読みこめるみたいですが、ひとまず触ってみることにします。
14 Feb 2015
Buffalo無線ルータで 無線LANをブリッジ接続で中継する手順について
こんなことに半日費したので記録しておく。
中継機に使おうとしたのは Buffalo WHR-600Dでした
そもそもは元ルータのAterm WH862A から、DHCPの割り振りがチェックできないので、中継器にアクセスできないのがこんなに時間がかかった原因でした。マニュアルに書いてある 192.168.11.1 には、アクセスできないし…。
めでたし。
中継機に使おうとしたのは Buffalo WHR-600Dでした
そもそもは元ルータのAterm WH862A から、DHCPの割り振りがチェックできないので、中継器にアクセスできないのがこんなに時間がかかった原因でした。マニュアルに書いてある 192.168.11.1 には、アクセスできないし…。
BUFFALOの無線LANルーター(WHR-G301N等)でブリッジ接続を設定するときの手順この記述が救いでした。 有線で中継器に192.168.11.100にアクセスして無事に設定ができました。
http://wp2.trojanbear.net/1286.html
"今回の設定で一番厄介なのは、BUFFALOの無線LANルーターのディップスイッチをOFFにすると(筆者註:ブリッジモードにする時も)問答無用で無線LANルーターのIPアドレスが192.168.11.100 になってしまう事です。"
めでたし。
10 Feb 2015
[CakePHP2] date / datetime / year フィールドで和暦の年を併記する
CakePHPのフォーム自動生成、超便利です。
日付に和暦が表示されて欲しいとき、この自動生成の中で勝手に変換されたら、最高です。
要はこんな感じで。
相変わらずでっちあげですが、
/app/View/Helper フォルダにFormHelper.php をコピーします。
_generateOptions というのがオプションを生成してる箇所になるんで、
表示はお好みで。
日付に和暦が表示されて欲しいとき、この自動生成の中で勝手に変換されたら、最高です。
要はこんな感じで。
相変わらずでっちあげですが、
/app/View/Helper フォルダにFormHelper.php をコピーします。
_generateOptions というのがオプションを生成してる箇所になるんで、
case 'year':
(中略)
for ($i = $min; $i <= $max; $i++) {
$data[$i] = $i;
}
(中略)
break;
の箇所を
for ($i = $min; $i <= $max; $i++) {
$wareki = 0;
if ($i > 1988) {
$wareki = $i - 1988;
$data[$i] = "${i}年(平成${wareki}年)";
} elseif ($i > 1925) {
$wareki = $i - 1925;
$data[$i] = "${i}年(昭和${wareki}年)";
} elseif ($i > 1911) {
$wareki = $i - 1911;
$data[$i] = "${i}年(大正${wareki}年)";
} elseif ($i > 1867) {
$wareki = $i - 1867;
$data[$i] = "${i}年(明治${wareki}年)";
} else {
$data[$i] = "${i}年";
}
}
に置き換えます。表示はお好みで。
3 Jan 2015
[CakePHP2] データベースにログをとる
Logging(CakePHP official)
http://book.cakephp.org/2.0/en/core-libraries/logging.html
Database logging in CakePHP一つ目の記事に書いてあることはCake2.*でもそのままつかえます。ファイルの場所が 'app/libs/log/database_logger.php'(for CakePHP 1.*) から 'app/Lib/Log/Engine/DatabaseLog.php' (for CakePHP 2.*)になるぐらいです。素晴しい。
http://blog.jandorsman.com/blog/database-logging-in-cakephp
たとえばログにセッション情報(ユーザIDとかね)を記録したい、みたいな事になったら、ユーザがログインしてるのか確かめないと、ログインしてない時に上手くログに入りません。例えばログイン失敗しました、みたいなログがきちんと取られないことになります。
public function write($type, $message) {
$log['type'] = ucfirst($type);
$log['created'] = date('Y-m-d H:i:s');
$log['content'] = $message;
if ($login = CakeSession::read('Auth.User')) {
$log['user_id'] = $login['id'];
}
return $this->Log->save($log);
}
[CakePHP2]Database logging (with some Cakesession Object)
Logging(CakePHP official)
http://book.cakephp.org/2.0/en/core-libraries/logging.html
Database logging in CakePHPWell, Jan's article is totally usable even in CakePHP 2.4 except one location 'app/libs/log/database_logger.php'(for CakePHP 1.*) to 'app/Lib/Log/Engine/DatabaseLog.php' (for CakePHP 2.*).
http://blog.jandorsman.com/blog/database-logging-in-cakephp
When you want log some information via Cakesession Object (i.e. user ID), you should check the object first in case the user not logging in.
public function write($type, $message) {
$log['type'] = ucfirst($type);
$log['created'] = date('Y-m-d H:i:s');
$log['content'] = $message;
if ($login = CakeSession::read('Auth.User')) {
$log['user_id'] = $login['id'];
}
return $this->Log->save($log);
}
Subscribe to:
Comments (Atom)
