今回、自分なりにcore.phpの各設定値を調査してみたのでブログに載せておきます。
あまり情報が載っていなかった項目や、説明の意味が分かりにくかった項目があって
自分なりの解釈で行っている所もありますが、とりあえず全部の項目をまとめました。
shellでcakephpのプログラムを動かす方法
shellでcakephpのプログラムを動かす方法を覚書を記述しておきたいと思います。
まず/app/vendors/shellsの中にshellを動かすプログラムを書いたファイルを作ります。
今回はcron.phpとしました。
そのファイル内で次のようなコードを書きます。
class CronShell extends Shell{
var $name = 'Cron';
function sendEmail() {
//命令を記述(メールを送信する)
}
function deleteFlag() {
//命令を記述(デルフラグの立っているのを物理削除)
}
}
ここでのクラス名は先ほどつけたファイル名と同じにしておきます。
クラスの中では複数の命令が記述できます。
CAKEPHPでqdmailを使ってメールをSMTP送信する覚書
今回メールを飛ばす時にSMTP送信しか出来ないサーバーでシステムを組んだので
CAKEPHPでqdmailを使ってメールをSMTP送信するようにしてみました。
まず下記のURLから
http://hal456.net/qdsmtp/
qdsmtp.phpの最新版をダウンロードしてきます。
ダウンロードしたのをcakePHPの/app/controllers/components
に置きます。(qdmail.phpと同じところに置く)
後はソースで次のように記述してあげるだけで大丈夫。
$mail = new QdmailComponent();
$mail -> smtp(true);
$param = array(
‘host’=>’メールサーバー’,
‘port’=> 25 , //これはSMTPAuthの例。認証が必要ないなら 25 でOK。
‘from’=>’xxxxx@xxxxx.co.jp’,// Return-path: になります。
‘protocol’=>’SMTP_AUTH’,// 認証が必要ないなら、’SMTP’
‘user’=>’ユーザーID’, //SMTPサーバーのユーザーID
‘pass’ => ‘パスワード’, //SMTPサーバーの認証パスワード
);
$mail -> smtpServer($param);
//メールを送信するユーザーリストの取得
$mail->subject($this->data[‘Mail’][‘subject’]);
$mail->from(‘送信元’);
$mail->replyTo(‘返信先’);
$mail->mtaOption(“-f”.’エラー時送信先’);
$mail->kana(true);
$mail->text(‘本文’);
$mail->to(‘あて先’);
$mail->send(); // メール送信処理
qdsmtp.phpはqdmail内で自動で呼び込まれているのでプログラムであえて呼び込む必要は無し。
tcpdfでIPAフォントを入れる手順の覚書
PDFを吐き出すシステムを作った時に、tcpdfがデフォルトで用意してくれている
フォントでは今回の案件に対応できなかったので、IPAフォントを使う事にしました。
以下のURLを参考に作業を進めていきました。
http://hrgs.xrea.jp/2006/08/24/how_to_use_japanese_with_tcpdf
IPAフォントは
http://ossipedia.ipa.go.jp/ipafont/
でIPAfont00203.zipをダウンロードしてくる。
展開していくつかttfファイルが出来るので、以後ipag.ttf
を使って作業をしてみる。
tcpdfをダウンロードしてきてFPDIを動かすところに配置する。
tcpdf/fonts/utils/の下にいるmakefont.phpとttf2ufm.exeを使って
ipag.ttfファイルからPDFで使えるファイルを生成する。
phpの動くところにtcpdfを設置してtcpdf/fonts/utils/以下に
ipag.ttfを置いておく。
コマンドプロンプトでtcpdf/fonts/utils/の下に移動して
「ttf2ufm.exe -a -F ipag.ttf」をコマンドで打つ。
すると処理が走って「ipag.afm、ipag.t1a、ipag.ufm」の
3つのファイルを生成する。
続いて同じ場所で
「[php.exeまでの相対パス] makeform.php ipag.ttf ipag.ufm」
をコマンドで打つ。
そうすると「ipag.ctg.z、ipag.php、ipag.z」の3つのファイルを生成する。
上記の3つのファイルをtcpdf/fonts/の下においてFPDI
から呼んであげます。
そうすると入れたフォントがPDFで表示されるようになりました。
CakePHP ナイスなクリスマスプレゼント!!
みなさん、今年ももうすぐ終わりですね・・・
今のプロジェクトが忙しいので全然年の終わりって気がしませんが、
巷ではサンタさんがナイスなプレゼントをくれました。
その名も、
CakePHP 1.2 Final (1.2.0.7962)!!
ついに出ました安定版。
プロジェクトにかかわっていただいているみなさんありがとうございます。
このブログでちょっとでも恩返しできたら幸いです。
では、皆さん良いお年を・・・
CakePHP関西勉強会で発表してきました
CakePHP関西勉強会に行って来ました。
今回はいつも聞いているだけの立場から何か話しをしてみようということでライトニングトークに立候補しました。
話す内容はというとCakePHPでの開発事例と失敗談という事で発表しました。
失敗談を話すために今まで、はまった事を思い出しながらパワーポイントを作っていたのですが結構失敗しているなーという実感です。
ただこれらのいくつかは自己解決をせずに別の方法で逃げたとか、次のバージョンで直ってたという形の発表になってしまったのでちょっと後ろめたさもあったのですが、自分も同じような経験をしたけどこういう方法で解決をしたよとアドバイスを頂いたりして凄くありがたかったです。
懇親会でも同じような失敗をしておられる方がいて凄く参考になったと声を掛けていただいたので、発表して良かったなと心底思いました。
発表をしていて思ったことは聞いている皆さんのリアクションが凄いうれしいなという事です。
開発事例でフォーム数が200以上もあると言ったところでみんなが「ウワー」とリアクションを取ってくれたことで気持ちが楽になってリラックスして発表をしていくことが出来ました。ありがとうございました。
終わったときの満足感もあって凄く楽しい勉強会でした。
CakePHP関西勉強会に参加してきました
関西では初となるCakePHP関西勉強会に参加してきました。
10月に東京でCakePHPカンファレンスに行って以来、関西でもしましょう!と言って無事に実現できたのでとても感激でした。今回で、終わらせず、2,3ヶ月ペースでやっていきたいですね。次回は僕も発表しようかな?(今回は弊社の福井が発表させていただきました。)ネタを考えておこう・・・
1. CakePHP アプリケーションの流れを追う
- shin1×1さん
- 今までポワーンとわかっていたつもりでしたが、図で動きを説明してもらうととってもわかりやすかったです。
- 特に前処理、後処理が色々あったのにびっくりした。
- componentが便利そう!今、modelが肥大化傾向にあるので考えてみようかな・・・
- Cakeのソースまた読んでみよう(だいぶきれいになったらしいので)
2. フォームメールを生成するプラグイン
- slywalkerさん
- 風水系にたとえていた今までの職業が気になりました(懇親会で聞けずじまい・・・)
- いままで独学で開発されていたのはすごいです。
- プラグインは使ったことがなかったので勉強になりました。
- default.ctpなどがあちこちに出来るのをどうしよう・・・
- 貴重な発表ありがとうございました。
LT1. 開発事例と失敗談
- keisonさん
- うまく実例と失敗談をまとめてくれました
- チケット投げるようなバグもあったので(現在は修正済み)英語を勉強しなくては・・・
- comporntファイルがないのに呼んでapachが落ちるバグはなんかのクラスをnewしまくってメモリが飛んでる感じでした・・・
- 発表お疲れ様でしたm(_ _)m
LT2. CakePHPと私(仮)
- 飯、カメラ、飯、カメラ、飯、カメラ、若干PHP
- CakePHPは・・・(笑)
- 写真の解説が面白かったです。
- 湯布院から帰ってきて体重増えてませんでした?(笑)
懇親会
韓国料理おいしかったです。みんなと打ち解けだした頃に終電で帰らなければならず、すごく残念でした。もっとCakeの話をしたかったです。
次回はまだ話せなかった人と話してみたいです。
なんと、偶然、8年ぶりに会った高校の同級生も参加してました!!ビックリ!!
みなさん、お疲れ様でした。
Ajax郵便番号住所入力
日付の入力補助カレンダー
みなさん、WEBサイトで日付を入力するのって大変ですよね。
そこで、JavaScriptで現在稼働中のサイトでもすぐにカレンダーの入力が出来るようになる物を紹介したいと思います。
株式会社スプーキーズ様がSpookies LabsでProtoCalendarを公開されております。
デモはこちらで色々な入力フォームに使用できます。
デモの日本用のカレンダーの日曜が右端だったので日曜を左端に持ってくる書き方をメモっておきます。
引数を2つ指定するだけでした。
一つハマったのが、編集画面などでデータが「2008/11/22」ではなく「2008-11-22」のようになっていると入力フォームの初期値が消えてしまいました。
株式会社スプーキーズ様いい物をありがとうございます。
複数行のリストを一気に登録する際の入力チェック
お客さんの要望で複数行のリストを直接リストの画面で編集したいと
言われて作った時に困った入力チェックの方法を覚書しておきます。
シチュエーションは注文カートに注文情報を入れてるリストで
数量を一気に変えたいというものでした。
まずビューで登録されている注文の商品と個数を一覧に出します。
<table>
<tr>
<th>商品名</th>
<th>値段</th>
<th>数量</th>
</tr>
<?php foreach($lists as $key=>$val) { ?>
<tr>
<td><?= es($val['Order']['name']) ?></td>
<td><?= es($val['Order']['price']) ?></td>
<td><?php echo $form->input("Order.{$key}.num", array('type' => 'text')); ?></td>
</tr>
<?php } ?>
</table>
<input type="submit" name="recalc" value="再計算" >
ここで数量のところをテキスト入力にしておいて再計算ボタンを押して$this[‘Order’][キーの番号][‘num’]
という風にコントローラに持ってきます。
これをモデルに渡して数量の入力チェックをかけます。
//注文リストの変更の際の入力チェック
function orderValidates($data) {
$chk =& Validation::getInstance();
//注文リストに入れる際に入力チェックをする
foreach($data['Order'] as $key=>$val) {
if (empty($val['num']) || !$chk->numeric($val['num'])) {
$this->validationErrors[$key]['num'] = '数量が不正です';
}
}
//結果の返却
if (count($this->validationErrors) > 0) {
return false;
}
return true;
}
これで数量の入力チェックでエラーが出た時にエラーの行の数量のテキストエリアの
隣に「数量が不正です」とメッセージをcakeが自動で出してくれました。