メモ

モデルのカスタマイズ

Giiで生成したソースをカスタマイズして、項目ごとのバリデーションなどの設定を追加します。 参考:この辺り一帯 フォームを使う: モデルの作成 | Yii 1.1 公式ガイド | Yii PHP Framework

Yiiチュートリアル2:Mysqlの設定とGiiによるCRUD作成

Yiiチュートリアル続き 参考は引き続き 初めに: 初めての Yii アプリケーションの作成 | Yii 1.1 公式ガイド | Yii PHP Framework

Yiiチュートリアル:Welcome表示が出ず真っ白…

PHPフレームワークYiiのチュートリアルメモ。 Yiiの公式ドキュメントは分かりやすいので、基本これを見て進める 初めに: 初めての Yii アプリケーションの作成 | Yii 1.1 公式ガイド | Yii PHP Framework

携帯で表示されない

メモ。 CakePHPで携帯・PC共通サイト作っていたら、一部の文字が携帯では表示されなかった。 原因不明のため、表示しない文字列を変更して回避したが、NG文字と状況をメモ。

joinsの設定を使う場合

メモ。 pagerやfindでデータを抽出する設定$optionsで、joinsによりINNER JOINなどを行う場合、 database.phpにてテーブルのprefixを設定すると正しく動かなくなる。 その対策。

モデルでURLのパラメータ(params)を取得する

コントローラでは、$this->paramsで得られる値:例えば$this->params['prefix']や$this->params['admin']を、 コントローラ・コンポーンネント以外で得る方法。

UtilsPluginの内訳

下の記事で存在を知ったのですが、 CakePHPに、様々な「ちょっとした処理」を追加できる UtilsPlugin という便利なものが配布されています。 http://1-byte.jp/2011/01/06/open_trivist/ しかし、公式ページ(ver.1.1)や、READMEを読んでも、何にどうやって使…

Mediaプラグインのver.1.2->1.3バージョンアップ

CakePHPをver.1.3にアップしたのに伴い、 1.2時代から導入+拡張コンポーネント入れて独自遣いしていた、Mediaプラグインも、1.3b*1にアップデートしました。その際の、トラブル解消過程のメモです。 * 注 1.「独自拡張」由来の不具合が混ざっているかもし…

ロールバック

CakePHPはロールバックも簡単でした。何らかの条件分岐でsave()処理を巻き戻したい場合の記載方法。http://book.cakephp.org/ja/view/1633/Transactions

CAPTCHA導入方法

CakePHPにCAPTCHAを導入する方法のメモ

さくらインターネットレンタルサーバにセットアップした際の2つの問題

さくらインターネットレンタルサーバにCakePHPをセットアップする方法はネットに各種情報がありますが、それらですぐには解決方法が見つからなかった点が2点ありました。 mediaプラグインでアップした画像が表示されない データ保存前に Sanitize::cleanを行…

SourceForgeにCakePHPをセットアップする場合

SourceForgeのWebホスティングサービスにCakePHPをセットアップする場合、app/webroot あるいは Webroot/ 以下の .htaccessに RewriteBaseの設定追加が必要です。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /[設置dir名] RewriteCond %{REQUEST_FILENAME} !-d RewriteC</ifmodule>…

CandyCaneインストーラを使ってみた。

CandyCaneのインストーラプラグインを使ってみて、エラーになった箇所・私が勘違いしてた実仕様は以下の通り。 app/configディレクトリを読み書き可にしないとdatabase.phpを作成できない 権限を変えてないと、database.php.installをdatabase.phpにリネーム…

controllerでset済みの値を取得

コントローラの $this->set(〜〜)でセットした値を参照する属性 $this->viewVars[変数名] $this->viewVarsは配列なので、値のチェックは if (in_array('isOwner', $this->viewVars)や if ($this->viewVars['isOwner'] !== true) {などでできる。

SaveAll()とafretSave()の関係

saveAll()使う場合は、afterSave()の設定に要注意、というお話です。

多言語化対応メモ

翻訳テキストを設定する方法で、多言語化(国際化)対応を行なった作業メモです。 データベースに設定する方法もあるそうですが、ただでさえACLでDBに負担かけているので、翻訳テキスト方を採用しました。 参考サイト CakePHP1.2の簡単国際化: CakePHP のおい…

テーマ機能のソース読み

CakePHPには「テーマ」機能というものがあり、ビューテンプレートを変更することができます。 http://book.cakephp.org/ja/view/488/Themesつまりこれで、「スキンチェンジャー機能」を実装できる(はず)。でも情報が少ないので、CakePHPの関連ソースを読んで…

ビューでコントーラ名とアクションを取得

コントローラ名 $this->viewPath アクション名 $this->action あるいは コントローラ名 $this->params["controller"] アクション名 $this->params["action"]

Textヘルパーで文字列処理

テンプレートで、文字列に特定の処理を施して表示したい場合、Textヘルパーが便利です。 http://book.cakephp.org/ja/view/216/Texttruncate (長文省略)、autoLink/autoLinkUrls (URL自動リンク)あたりが頻度が高そうですが、 toList (配列を文字列リストに…

特定のコミットの差分を見たい場合

コミットハッシュを指定して、特定のコミットで反映した差分を見たい場合のコマンド。 git show [コミットハッシュ] コミットハッシュは、 HEAD や HEAD^2 でもOK

IE8でIE7のレンダリングを使う

IE8で、以下のメタタグを記載すると「IE7標準モード」でレンダリングされるそうです。 <meta http-equiv="X-UA-Compatible" content="IE=7">IE8のレンダリングモードに関するまとめ | SummerWind IE5と同等モードというのもあるそうです。 本来の目的は以前IE対応でデザインしたページを改修せずに表示するため</meta>…

302エラーの解消方法

302エラーになる場合。コントローラやモデル、コンポーネントなどのソースでPHPタグを閉じた後*1に余白があるのが原因で、発生している場合があるそうです。 http://old.nabble.com/Re%3A-TCPDF-error%3A-Some-data-has-already-been-output%2C-can%27t-send…

mediaプラグインまとめ

Mediaプラグインによる画像のアップロード機能作成で、書いた記事のまとめリンクです。

メディアビュー機能

静的ファイルを、コントローラを通してアクセスさせる方法。 http://book.cakephp.org/ja/view/489/Media-Viewsログイン済みメンバーのみ、あるいは権限のあるメンバーにのみダウンロードを許可させる場合などに使えます。サンプルはダウンロードですが、画…

手軽にお試しZen-Coding

HTMLとCSSのコーディングを高速に行なえるプラグイン、「Zen-Coding」なるものが話題になっています。 http://blog.gaspanik.com/coding-with-textmate-and-zencoding 使っているエディタがZen-Codingに対応していない場合、 あるいはプラグインの追加の手間…

mediaプラグイン応用(5) 画像の出力設定

mediaプラグインで、Versionファイルの設定はcore.phpに設定しますが、実際にどのように設定すればよいのか、主な例をまとめました。プラグイン側のconfig/core.phpを改修するか、 bootstrap.phpでmediaプラグインのcore.phpを読み込んだ後で、Configure設定…

TwitterAPI検討

個人的に欲しいTwitterサービスと、それをTwitterAPIで実装する場合の問題点メモ*1。 サービスの概要 特定の時間帯に共通の話題について呟いていた(いそうな)ユーザのつぶやきを、タイムラインに沿って並べて表示する ちょっと、一筋縄には行かなさそうで…

TRPG系bot探してみた

ちょっと思い立って、twitterのダイス振りbot探してみました。ダイスとカードのロジックは持ってるのでそういうbot作ってもいいかなあ、と思ったのですが、発信のシステムとか考えないと難しいですね。。

動的な表の出力ヘルパーtableHeaders/tableCells

HTMLヘルパーのtableHeaders, tableCellsは、配列の数だけth/tdを出力してくれる、動的に表を作る際に実に便利なヘルパーなのですが、tableHeaders第三引数オプションの$thOptionsは、全部のthに同じオプションしか指定できません。CookBookだけでは分からな…

Containerとrecursive

Containはrecursiveで取れる範囲から絞り込む Contain設定なしで取れてないモデルは、Containで指定しても取得できない recursiveの階層を増やすこと。 recursive = -1 でContainはできない