開発してる分には全然気付かなかった…
開発環境を組み立てなおしたせいで、タイムゾーンの設定を忘れてた。
php.iniで
date_timezone = 'Asia/Tokyo'
にしたら直った。
開発してる分には全然気付かなかった…
開発環境を組み立てなおしたせいで、タイムゾーンの設定を忘れてた。
php.iniで
date_timezone = 'Asia/Tokyo'
にしたら直った。
MacのNetBeansとCodaにzen-codingを入れた。
NetBeans
NetBeans→環境設定→インポート→ダウンロードしたzipを選択→すべてチェック→了解→再起動
ショートカット:Tab
Coda
ダウンロードしたzipを解凍→クリック→(起動してたら再起動)
ショートカット:Ctr + , (カンマ)
NetBeansのzen-codingはdiv#idとかに対応してない様子。
Codaはいい感じに使えた。
クックパッドみたいな意見箱を作りたかったので、既存のノーマルなフォームにJsHelperを組み合わせてみた。
(エンジンはJQueryを選択)
CakePHP 1.3.0
まずは$form->submit()部分を修正。
<?php echo $js->submit('送信', array('buffer'=>false, 'id' => 'OpinionFormSubmit', 'url' => '/opinions/ajax_add', 'update' => '#OpinionFormBox', 'beforeSend' => 'opinionFormLoading()')); ?>
後はフォーム画面とサンクス画面をelementにして、更新するボックス内で切り替えできるようにelement名を変数に。
<div id="OpinionFormBox">
<?php echo $this->element($opinionElement); ?>
</div>
さっきurlで指定したアクションではメール送信や結果に応じて読み込むelement名の変数をビューにセットしたり。
後はajaxなのでそれ用の設定を。
if (!$this->RequestHandler->isAjax()) {
$this->cakeError('error404');
exit;
}
Configure::write('debug', 0);
$this->layout = 'ajax';
これで動いたー。
エラーメッセージも普通のフォームみたいに表示されるからいい感じ。ブラウザのJSオフっても既存のフォームが普通に動いてくれる。
CakePHP1.3で開発を始めたのでさっそくvirtualFieldsを使ってみた。
CakePHP 1.3.0
以下のようにCASEも使えるっぽい。
var $virtualFields = array(
'full_title' => 'CASE WHEN info_categories_id != "" THEN CONCAT("[",InfoCategory.name,"] ",Info.title) ELSE Info.title END',
);
お知らせカテゴリが設定されている場合のみタイトルにカテゴリ名を括弧付きで付与。
これで$info['Info']['full_title']で 〜[メディア情報] どこどこで紹介されました〜 みたいな文字列が簡単に呼び出せる。
1.2系までのafterFindで長々と結合してた箇所を消してコードがすっきり!
find(‘list’)で姓・名を結合させた名前を表示させたい場合などに、displayFieldでCONCATをしてもうまくいかなかった。
CakePHP 1.2.6
var $displayField = array(‘CONCAT(Member.sei, Member .mei) as Member.name’);
Member.CONCAT〜みたいな感じでSQL内で勝手にモデル名がつけられてエラーになる様子。
しょうがないので以下のように対応。
$this->set(‘members’, Set::combine($members, ‘{n}.Member.id’, array(‘{0} {1}’, ‘{n}.Member.sei’, ‘{n}.Member.mei’)));
ちなみに、1.3だとvurtualFieldってので解決できるらしい。
(twitterで教えてもらった。感謝!)
これがあれば大分シンプルに処理できて助かる!