CakePHP

インストーラ改修(2) エラー検出とロールバック

app/config関連の権限設定を間違えていると、database.phpを作成する過程でエラーになります。 その付近のエラー検出追加と、ロールバック処理を追加しました。 app/config関連で必要な権限設定は以下の通り app/config (777) app/config/database.php.insta…

インストーラ関連まとめ

CakePHPベースのプロジェクト管理システム、 「CandyCane」 http://thechaw.com/candycane/ のソース(概ね2010/04時点)をベースとした、CakePHPでの「インストーラ実装方法」まとめです。私的残件課題:「多言語化対応」ができてない、という問題点が、残…

インストーラ改修(5) core.phpの書換え:Security.salt

CandyCaneベースのインストーラで、core.phpの設定(Security.salt)をランダムハッシュで行なう改修です。この機能追加は、概ねCroogo ver.1.3の仕様ベースです。

インストーラ改修(1) システムメッセージ表示

CandyCaneのインストーラプラグインを改修してみます。 ベースソースは、昨日時点の http://thechaw.com/candycane/source/ です。 まずは、ふと気づいた 「コントローラで $this->Session->setFlash()してるはずのメッセージがテンプレートで表示されていな…

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

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

インストーラの作り方調査

インストーラを作りたい。 できれば、サーバにソースをアップロード→ブラウザアクセス、一部データ(管理ID,パスワードなど)を入力→実行 で、できるだけ全てが済むようなインストーラを。 基本的なインストーラの作り方の一例を記載した記事を見つけたので、…

CakeSchemaはENUMやInnoDBを扱えない

CakePHPには、テーブルを初期化・作成するSchema機能があります。 現在のDBからSchema設定を作成したり、 以前のSchemaとの差分を更新するSchema設定を作成したり、 database.phpのテーブル名prefixにも対応しているので、 システムのインストール・アップデ…

$form->inputで日時選択フォームのカスタマイズ

Formヘルパーで、日時選択フォームの出力をカスタマイズする方法。 以下の参考サイト:dateTime()による指定方法をベースに、 input()による指定方法 および 月を英語以外で表示する方法 プルダウンの最初を空欄にする/しない方法 参考サイト CakePHP1.2 For…

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の関連ソースを読んで…

DBデータをUTF-8に統一するための設定

CakePHPデフォルトのデータベース設定(database.php)では、サーバ環境によってはデータがUTF-8で保存されない場合があります。文字化けや、VARCHAR文字数上限のエラーに繋がるので、CakePHP側で「DBにUTF-8で保存する」ための設定を追加して置く方が良いです…

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

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

ページネーション:ビューの詳細

CakePHPのページネーション(ページャ)機能のヘルパーについて。 以下CookBookから抜粋と補足。 http://book.cakephp.org/ja/view/166/Pagination-in-Views

Textヘルパーで文字列処理

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

IE6〜8のトンデモな違い:修正

前述の表示状態を修正しました。特にIE6*1の表示は、CakePHPのgeneric.css(ver1.2.5)に由来していたので注意が要りそうです*2 *1:InternetExplorerCollectionの他、本家IE6でも同様の表示になることを確認 *2:但し、私の独自CSSの影響もあります

302エラーの解消方法

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

Formatを自由に設定できるTimeヘルパー(2)

id:hiromi2424さんからの情報を受け、ヘルパー名は「Time」のまま、nice()とniceShort()で日時の出力書式を設定する改修を行ないました。 前記事

Formatを自由に設定できるTimeヘルパー

CakePHPには、日付の文字列(2010-03-03 16:57:22など)をフォーマットしてくれるTimeヘルパ−があります。 http://book.cakephp.org/ja/view/275/Formattingこれを使うと、「XX時間前」や「今日、15:44」のような表示を、容易に実現できます。しかし、「今日…

mediaプラグインまとめ

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

mediaプラグイン応用(11) アップロードユーザ情報の追加

Mediaプラグインは、「どのユーザがアップロードしたか」の情報を保管しません。 そのため、別のユーザがアップロードしたファイルであっても、IDを正しく指定すれば削除できてしまいます。attachmentsテーブルにuser_idを追加して、ファイル保存時の登録と…

メディアビュー機能

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

mediaプラグイン応用(10) 画像サイズを変更しない

Mediaプラグインで画像のVersionファイルを作成する際、サイズを変更しない方法。拍子抜けするくらい、簡単です。 core.phpのVersionファイル設定で、fitCrop/fit/zoomCropなどの、縮小設定を一切いれないだけです。差分 /* 画像 */ + 'orig' => array('conv…

mediaプラグインのGIFAR対策

Mediaプラグインは、アップロードファイルしたファイルそのもの(transfer/以下)への直接アクセス表示を非推奨として、代わりにfilter/以下に出力したVersionファイルの表示を推奨しています。 特に画像ファイル等に、セキュリティ上の理由があるためだそう…

mediaプラグイン応用(9) 元のファイル形式を保持して縮小

mediaプラグインでVersionファイルは、core.phpなどでconvertに設定した形式で出力されます。元のファイル形式ままで出力する設定を追加しました。 注:この記事は、Viewで呼び出し時にVersionファイルを作成する 改修済みのソースをベースに記載しています。

mediaプラグイン応用(8) VersionファイルのmimeTypeを任意で出力

Mediaプラグインの「Versionファイル機能」で出力される縮小画像の、ファイルタイプを任意に選べる改修を追加しました。 注:この記事は、Viewで呼び出し時にVersionファイルを作成する 改修済みのソースをベースに記載しています。

mediaプラグイン応用(7) 複数アップロード禁止

デフォルトだと、1つのモデルに複数のファイルをアップロード可能なので、1つしかアップロードできないように改修しました。controllerでアップロード処理済みの場合のチェックを追加し、編集画面で使用するelementを改修しました。

mediaプラグイン応用(6) Viewパーツの設定

mediaプラグインのヘルパーMediumと、編集フォーム出力用エレメントAttachmentの設定を変更する、主な変数/引数をまとめました。

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

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