CakePHP
デフォルトだと、ファイルのアップロード時にVersionファイルを全て作成します。これだと、 Versionファイルの容量がかさむ あとからVersionファイルの設定を追加した場合、以前からのファイルに対応できない 等があるので、VersionファイルをViewで呼び出し…
アップロードするファイルの種類やサイズをチェックする設定を追加しました。 端的に言うと、バリデーションです。基本的にそんなに難しくないのですが、$fieldList指定を追加していたために、ちょっとハマりました・・・
mediaプラグインでアップロードしたファイル名を、任意に変更してみました。元々のファイル名のままだと、日本語のファイル名で不正エラーになるケースがあったり、サーバ側でファイルを扱えなくなる可能性があるので、ファイル名変更は必須です。 Attachmen…
mediaプラグインの基本的な保存・表示周りを一通りできるようになりました。 「こんな事できないか」な課題はありますが、 多様な種類のファイルアップロードを一元的に扱えるのは魅力的。 設定などでカスタマイズできないか、検討してみます。拡張が必要な…
mediaプラグインで、Userに関連付けてattachmentsおよびpp/webroot/media/transfer/img 以下に保管した画像の表示実装です。 前記事 mediaプラグイン導入(1) 基本的な導入 - 趣味の延長線 追記:2/17 0時頃 filterに出力される縮小画像の作成タイミングに、…
画像など、アップロードファイルを保存・表示するプラグイン「Media Plugin for CakePHP」を導入してみました。個人的に、実際に使うには、若干機能追加が欲しい感じですが、まずは基本機能の導入から。
HTMLヘルパーのtableHeaders, tableCellsは、配列の数だけth/tdを出力してくれる、動的に表を作る際に実に便利なヘルパーなのですが、tableHeaders第三引数オプションの$thOptionsは、全部のthに同じオプションしか指定できません。CookBookだけでは分からな…
以前、Session.saveを独自設定を指定して、セッション有効期限などを変更する方法を紹介しましたが、この方法、セッションをDBあるいはキャッシュに設定する場合は避けた方が良さそうです。
CakePHPのデフォルトCSS + $formヘルパーをベースに、position:relativeを用いてsubmitボタンを2つ横並べにしたら、一方(左側)が押せなくなる現象が発生しました*1。 原因は、submitを含むdivのCSSによるものでした。 CSSの設定によっては、CakePHPに限らず…
Modelから取得したデータ配列を更に検索&抽出する必要が生じましたが、array_searchなどで対応できる範疇を超えていました。これは独自に関数作らないとダメかなあ、と思いつつtwitterで arrayをSQLのようにサーチしたい。 WHERE public_flag=true AND crea…
前日、関連モデルがある場合の$fieldListは、[テーブル名].[フィールド名]で設定と記載しましたが、むしろ間違いでした。 $fieldListの設定には、テーブル名を入れてはいけません。以下、$fieldListチェックの動作検証です。
Containはrecursiveで取れる範囲から絞り込む Contain設定なしで取れてないモデルは、Containで指定しても取得できない recursiveの階層を増やすこと。 recursive = -1 でContainはできない
複数の関連モデルの同時登録の方法を調べていて、save()に、$fieldListという設定があることを知りました。 http://book.cakephp.org/ja/view/75/Saving-Your-Data 例えば、usersのgourp_idという項目はユーザ変更不可なのだけど、usersのedit画面にデータを…
$form->inputでラジオボタンを出力するときに、初期状態で値をどれか選択済にしておく方法。 $form->radioによる方法は調べれば出てきますが、$form->inputは見当たらなかったので・・・ 結果論、$form->radioとほぼ同じでした。 Thanks for 「cakephpは困っ…
同じロジックが複数箇所にあるとメンテナンス漏れの原因になるので、1箇所にまとめるべきと思うのですが、 view, controller, modelそれぞれで共通使用するロジックの場合、どこに置くのが一番正しいのでしょう。どこに置いても、結局App:importすれば使える…
CakePHP関連で、多分、特に初期で一番悩んだのが「ACL関連」 自己の「悩み履歴」「解決策メモ」のまとめです。 そして、まだまだ不満 ^^; あるので・・・今は保留ですが、 今作ってるモノの基礎できたら、検討予定です。 特にSQL負荷関連。。
「特定のuserが一定期間中に作成したnotes一覧」の取得を、 Noteモデルから取得(belongsTo設定使用) と Userモデルから取得(hasMany設定) で行って比べてみました。
shin1x1さんがtwitterで「ver1.3にこんな機能がある」とtwitterで呟かれていたのをみて、実際に使ってみました。 virtualField機能で、できること*1 定形の計算や文字列処理を、取得時にSQL内で行う SQL関数を直接指定 *1:もっとあるかもしれない・・・
shin1x1さんの記事を検証したくなったので、 CakePHP1.3.0-βをセットアップ+検証環境作り*1のためにbake使用してみました。 気になった点リストアップ chiper_seedという暗号化キー関連の設定が追加になってますが、これの運用用変更時、ご注意。 ちゃんとキ…
Authコンポーネントによる認証は、通常はusersのusernameとpasswordの照合で行うので、この2項目の登録が必須fieldsの設定で、username => mailadressのような項目名変更は可能ですが、2項目、うち1つは暗号化した認証情報が必要">*1ですが、携帯の固有IDの…
独自のセッション設定を使う場合core.phpで指定しますが、これをコントローラ側で上書きするタイミングは、__construct()が基本。参考 http://d.hatena.ne.jp/hetima/20070201/1170313526 2010/02/09 13/30頃 追記 セッションをDBあるいはキャッシュ(memcach…
CakePHPで、Security.levelをmediumにするとセッションの有効時間が自動的に7日間になるところをカスタマイズする方法の再実装。以前、app側で変える方法がわからなくてcake/libs/session.phpを改修してましたが、 方法を教えていただいたので、ようやく対応…
バリデーションの基本設定でつまづいた事。保存する項目に「URL」があるからurlのvalidationルールを指定したら、 設定しない場合に空送信してもエラーになる。。 notEmptyルールがわざわざあるから、これを指定しなければEmptyOKなのかなあって思ってたんで…
$html->linkは、mailto:でもリンクが作れる。 第二引数に、Stringでmailto:〜 と指定するだけ。 echo $html->link("メール", "mailto:".$user['User']['mail']);↓ <a href="mailto:cake@example.com">メール</a> mailto以外がどうなるかは未検証。。
モデルの中で別のモデルを使う、という方法は既に紹介されています。 ひでぶろぐ。 containable で関連モデルを読み込ませないコントローラ側で別のモデルを使う方法も、ほぼ同様で実現できました。
開発の関係でちょっと特殊な環境にCakePHP構築したところ、 http://cakephp-root/ にアクセスした時は問題なかったのですが、 http://cakephp-root/controller/action にアクセスすると、Internal Server Errorになりました。 これを、 app/webroot/.htacces…
Formヘルパーのinputメソッドを使うと、labelで括られた項目名と、入力フォームが自動的に出力されますが、 そこに「 * 必須」とか「6文字以上12文字以下」のように付記を入れる方法。 $options[‘before’], $options[‘between’], $options[‘after’]のいずれ…
以前の改修で、全データはDB登録前にヌルバイトなどの不正コードとSQL特殊文字のエスケープを処理する(($opsion['encode']=falseでSanitize::clean()))仕様にしていましたが、 その場合、TEXTAREAで改行を入れて登録した場合、\\\nを\nに戻す、という一手間…
コントローラー単位でACLを設定している場合で、モデル(コントローラ)を新たに追加した際にはACLの設定追加が必要なので、その方法のメモ。コントローラー単位でACLを設定の実装方法はこちら。
3文節位の長いテーブル名からbakeでモデルを生成すると、関連の生成時にクラス名が途切れました。原因など不明ですが、ひとまず現象メモ*1。 *1:CakePHPのバージョンは1.2.5