メイン

cakePHP アーカイブ

2007年06月04日

cakePHPのfileタグヘルパー

cakePHPのヘルパーで、$this->file()を使うときの大半は、ファイルノアップロードだと思う(他の使い道を知らないだけかも・・・)しかしながら、ファイルのサイズを書いたhiddenタグも必要なので、どうせだからと一緒に書き出すようにしてみた。

html.phpを cake/libs/view/helpersから app/view/helpersにコピーしてオーバーライドできるようにする。

function fileがある場所を探す。

function fileの引数の最後に、$size=300000 を追加。この数字は適当。

2つあるreturn~の行を

return $this->output("<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"$size\" />".sprintf(・・・ と付け足してしまう。2つとも。 これで、ビューから、$this->file()とすれば、hiddenタグも自動的に出力される。パラメーターでファイルの大きさを指定できます。 あんまりクールな方法じゃないけど。

cakePHPでモデルに保存の前にhtmlentitiesする

postデータを受け取ったときに、よくhtmlentitiesすると思います。cakePHPだと、どこで実行しようかと思ったのですが、モデルのビフォーフィルターでしてみた。

class AppModel extends Model{

function beforeSave()
{
$arrs = $this->data;

foreach ($arrs as $key=>$arr) {

foreach( $arr as $key2=>$value){

$encode = mb_detect_encoding( $value );
$value = mb_convert_encoding( $value, "UTF-8" ,$encode);
$arrs[$key][$key2] = htmlentities( $value,ENT_QUOTES, "UTF-8" );

}
}
$this->data = $arrs;

return true;
}
}

これで問答無用で、何でもかんでもhtmlentitilesするはず・・・ただし、失敗した場合の処理がないけど(誰か作ってください)ただし、データベースへ保存をしないでビューへ渡す場合はこの場所ではダメです。コントローラーに関数を作って、そのつど呼び出しですね。

2007年06月06日

Masterbakeの不具合かな?

cakePHPの機能であるbakeの拡張版、masterbakeを使っていたら、masterの売りであるページネーションに不具合を発見。書いておく

症状:
 前ページ、次ページのボタンが反応しない。セレクトボックスでのページ切り替えもできない。トップとラストへのボタンは動く

原因:
 操作の情報をコントローラーが受け取っていない。

処方:
 そのままなら、220行と221行の2箇所、
$this->params['data']~

$this->params['url']['data']~
に変更。

このスクリプトの直後に、同じようなコードがあるが、そちらでは
$this->params['url']~
になっているので、これで良いと思います。

masterbakeそのものを訂正すれば良かったのでしょうが、良くわかんない(というかチャレンジもしていませんが)ので、報告はここまで。

About cakePHP

ブログ「わくさんのScript研究所」のカテゴリ「cakePHP」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはPHPコードの自動生成です。

次のカテゴリは送信先の名前を差込送信するメールマガジンです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35