cakephp入力フォームで、前回と変更になった入力値は入力文字を変更(赤く)して表示したい場合のサンプルです。
前提条件
前回入力した値と今回入力する値は別で情報を管理します。
その上で、前回と今回の差がわかる状態で判断します。
モデルはSampleを使用します。
カテゴリー: CakePHP
CakePHP PaginateのソートでJOINしたテーブルのカラムを指定する
PaginateのソートでJOINしたテーブルのカラムを指定・・・
動かない・・・なぜだろうと調べてみたのでメモ
testsテーブル(id, name)
test_detailsテーブル(id, test_id, name)
があったとします。
echo $paginator->sort('氏名', 'TestDetail.name');
では動きません。
SQLエラー防止の為に親テーブルにないカラムは無視するようです。
(http://xxxx/sort:column/direction:ascで適当なカラムを指定できるので)
ではどうするのか・・・
日曜と祝日を赤表示する方法
祝日を判定するのに、http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htmのPHPのコードを利用しました。
CakePHPでinputの名前で5層に対応する
CakePHPで配列で指定したinputに$this->dataが連動してくれる
helperのありがたい機能を使っていたのですが、
<?php echo $form->input(“Part.1.element.1.radio”, array(‘type’=>’text’)); ?>
という感じの5層構造になるとデータの引継ぎをしてくれません。
helperの対応しているのは4層までみたいです。
困ったということで調べてみるのですが、これという記事が見つからないので
自分でカスタマイズして5層でもデータがやり取りできるようにしました。
pChartでレーダーチャートを描きました。
グラフを必要とするお仕事があり、JPgraphとpChartを候補にあげました。しかし、JPgraphは、有償なので対象からはずれ、pChartで作成することになりました。
○インストール方法
cakephpで実現しています。
通常はviewsを作成して表示するのですが、
このサンプルでは、controllerで表示するように記述しています。
cakephp\app\vendors\pChartにダウンロードしてきたpChart.1.27d.rarの展開したものをコピーします。
通常はviewsを作成して表示するのですが、
このサンプルでは、controllerで表示するように記述しています。
cakephp\app\vendors\pChartにダウンロードしてきたpChart.1.27d.rarの展開したものをコピーします。
あとは、フォントを利用するので、ipaexg.ttfをcakephp\app\vendors/pChart/Fonts/ipaexg.ttfへ配置します。準備は以上です。
○利用して苦労した点
デフォルトのグラフの色が変えれなかったのですが、
// デフォルトの色を変更する。
$Test->setColorPalette(0,79,129,189);
の記述で変更することができました。
TMP.”graph/”のフォルダを作成して書き込み権限をあたえてください。
CakePHPで複数prefixを使ったときのページネートの挙動を直す
前回はapp/core.phpの
Configure::write('Routing.admin', 'admin');
をコメントアウトすることでページネートのリンクを押した時にリンクエラーになるのを防ぎました。
じゃあ、「公開」「公開(携帯)」「管理」のように3つサイトを分ける時にはどうするの?ということで調べてみました。
CakePHP formヘルパーでselectのoptionだけに属性をつける方法
formヘルパーでselectに属性を付けるときは
echo $form->input( 'Model.field', array( 'type' => 'select', 'options' => $arr, 'style' => 'color: #ff0000' ) );
option部分だけ属性を付ける時にどうすれば?・・・と思ったのでメモ
cakephpのdatabase.phpのprefixを使用しました。
新しいシステムをレンタルサーバーにアップする際に、データベースが1つしか存在せず、新たにデータベースを作ることもできず、すでに他のシステムのテーブルが存在し、データベースが利用されている状態にありました。既存システムと新システムのテーブルを簡単に区別する必要があると思い調べました。単純にテーブル名を変更すると、MVCモデルのファイル名やフォルダ名も変更する必要が出てきます。調べていくうちに、cakephpのdatabase.phpでプレフィックスを指定できることが判明し、’prefix’ => ‘okushin_’,ように定義しました。当然MySQL側でも
mysql> ALTER TABLE 古いテーブル名 RENAME 新しいテーブル名;
のコマンドにてテーブル名をusersからokushin_usersのように新システムに関係するテーブルすべてにokushin_をつけてテーブル名を変更しました。するとMVCモデルでのMのuser.php、Vのフォルダ名users、Cのusers_controller.phpのファイル名フォルダー名はそのままでシステムが正常に動作しました。とても簡単で利用しやすい機能だと思い紹介してみました。
selectボックスを変更すると他の複数項目を自動的に変更するAjaxのサンプルソース
CakePHP開発にて、selectボックスの変更イベントで他の項目を自動的に変更するAjaxのサンプルのソースです。modelsとcontrollersの一部のコードにつきましては、割愛させて頂きます。本機能を追加するにあたっては、edit.php,samples_controller.php,ajaxskind.php,ajaxsitem.php,ajaxsmemo.phpのコードを参照して頂き、参考になれば幸いです。
wdCalendarをCakePHPに組み込んでみる
以前紹介した記事「wdCalendarを日本語で使ってみる」で日本語化したwdCalendarをCakePHPに組み込んでみたので紹介します。
それから少し改造ということで、登録できるフィールドを追加してみるのと、ログインした人のidを基に誰が登録した予定なのかを持たせるようにしました。