symfony

Fixtureを記述し始めるのが面倒なのでテンプレートを出力するタスクを作った

symfonyにはRuby on Rails由来のfixturesというサンプルデータを登録する仕組みがあります。The Definitive Guide to Symfony 16章 http://www.symfony-project.org/book/1_2/16-Application-Management-Tools#chapter_16_sub_fixture_file_syntax →「Fixtur…

symfonyで画像認証を使う(reCAPTCHA)

id:brtRiverさんのエントリ「http://d.hatena.ne.jp/brtRiver/20090412/1239563001」を見て、そういえばプラグインでreCAPTCHAのやつがあった気がしたので、試しに使って見ました。reCAPTCHAは、sfFormExtraPluginの一部として提供されているウィジェット/バ…

AdminGeneratorで生成した一覧画面のフィルタでプルダウンを使う

AdminGeneratorで管理画面を生成すると、スキーマで外部キーを定義しているフィールドは自動的にプルダウンが生成されますが、特にマスターテーブルを用意しないようなコード値を持つフィールドは、「テキスト入力+is empty」入力欄が生成されてしまいます…

sfFormFilterPropel::addNumberCriteria(メモ)

SynfonyのAdminGeneratorで管理画面を生成した時に、リストのフィルタ(検索)クエリの生成に使われる部分http://trac.symfony-project.org/browser/branches/1.2/lib/plugins/sfPropelPlugin/lib/form/sfFormFilterPropel.class.php#L187 getCo…

symfony1.2のAdminGeneratorでid属性を書き換える場合

通常のフォーム(sfForm)で id 属性を変更する場合は、sfForm 継承クラスの setup メソッド内で、ウィジェットのコンストラクタに $attributes パラメータとして id 属性を渡します。 しかし、AdminGenerator で生成したフォームの場合、ウィジェットのコン…

アクションキャッシュを明示的に削除する方法

アクションキャッシュを使用するとアクションのレンダリング結果がキャッシュされるようになりますが、このキャッシュは内部的なデータの更新などには全く依存せず、単に作成された時刻から●秒、という生存期間でキャッシュされます。 しかし、データの更新…

アクションキャッシュを使用する場合にテンプレートではなくアクションから直接出力しているとキャッシュされずにページが真っ白に

まあ当然といえば当然なのですが・・・ cache.yml にてアクションの結果をキャッシュするように設定した場合、厳密には「アクションの処理結果としてレンダリングされたテンプレート」がキャッシュされ、アクションの処理がスキップされるようになります。例…

404ページをカスタマイズする場合の注意

symfonyで404ページをカスタマイズする場合、setting.yml 内の以下の設定を有効にして該当するアクションの出力をカスタマイズします。 #all: # .actions: # error_404_module: default # To be called when a 404 error is raised # error_404_action: erro…

symfony のルーティング処理のダイエット

prod モードではデフォルトで、ルーティングの設定のみでなく、設定から生成される sfRoute クラスでコンパイルを行った状態のインスタンスがシリアライズされ、キャッシュされます。 したがって、prod モードでは実行時のコンパイル処理のオーバーヘッドは…

symfonyのルーティング処理の内側(sfRoute)

symfonyでのルーティング処理がどのように行われているのか、ソースを読んでみました。ルーティングの設定は、routing.yml に記述します。 routing.yml に記述した設定は、sfRoutingConfigHandler によってパースされ、キャッシュファイルとして保存されます…

sfValidatorPass

sfValidatorPassは「何もしないバリデータ」です。入力値の検証や変換は一切行わず、「その名前のパラメータを受け取る」ということを示すために存在しています。※symfonyのフォームフレームワークで入力値のバリデーションを行う場合、すべてのフィールドに…

symfony Forms in Action(1.1)の校正をお手伝いしています

おそらく日本のsymfonyユーザーなら誰でもお世話になっているであろう、Masakiさんが運営するsymfonyドキュメントの翻訳プロジェクトで、少しお手伝いを始めました。 ドキュメントの翻訳 翻訳プロジェクトのGoogle Codeサイト 翻訳プロジェクトのGoogleグル…

Symfonyでブラウザキャッシュ用のヘッダを出力している箇所

/lib/filter/sfCacheFilter.class.php の119行目あたり cacheManager->getClientLifeTime($uri, 'page')) 118 { 119 $this->response->setHttpHeader('Last-Modified', $this->response->getDate(time()), false); 120 $this->response->setHttpHeader('Expi…

SymfonyのsfForm派生クラスで簡単に確認画面用に要素をHiddenに変換

の方法がbrtRiverさんのところで公開されていたのでメモ。→http://d.hatena.ne.jp/brtRiver/20081128/1227824656bindした後で、sfWidgetSchema内の要素を全部sfWidgetFormInputHiddenに置き換える感じです。 こういう方法はアリですねぇ。 私はこれまでに自…

条件に従ってアクションをforward/redirect/forward404するメソッド

sfAction::forwardIf($condition, $module, $action) sfAction::forwardUnless($condition, $module, $action) sfAction::redirectIf($condition, $url, $statusCode = 302) sfAction::redirectUnless($condition, $url, $statusCode = 302) sfAction::forwa…

Symfonyフォーム入門ドキュメント(1.2)

sfWidget系フォームの説明symfony 1.x legacy websiteチャプターが飛んでいるのはまだ執筆中の部分が多いってことなんでしょうかねぇ。 symfony 1.x legacy website symfony 1.x legacy website symfony 1.x legacy website symfony 1.x legacy website symf…

symfonyプロジェクトの初期化(1.2)

いつも方法を忘れてしまうのでメモ・・symfony 1.x legacy website svnチェックアウト プロジェクト用ディレクトリを作成 /data/bin/symfony を使ってプロジェクト初期化 # プロジェクト用ディレクトリを作成 $ mkdir prj # プロジェクト用ディレクトリへ移…

symfonyコマンドのタスク一覧

$ symfony -T

propel:build-allでキャッシュに書き込みできないエラー

symfony1.2(http://trac.symfony-project.org/changeset/13196/branches/1.2)で、/cache/frontend/dev/config 配下に書き出されるファイルのパーミッションが 0644 になっているので、後からコマンドラインで symfony propel:build-all をやると、ファイルに…

symfony ライブラリディレクトリのパスの設定

プロジェクトディレクトリ配化のconfig/ProjectConfiguration.class.php内で、sfCoreAutoload.class.phpを絶対パスでrequire_onceしているので、必要であればこれを書きかえる。

symfony mod_rewriteの設定

プロジェクトディレクトリ配下web/.htaccess内の「RewriteBase」は、環境のディレクトリ構成に合わせて修正する。 ドキュメントルートになっている場合は「/」のまま。

Symfony公式系RSS

ちょっとどっぷりとsymfonyに入り込んでみようということで、まずは公式系のRSSを手当たり次第に購読。こちらのページの右側の「RSS Feeds」にあります。 symfony 1.x legacy website 公式ブログ http://www.symfony-project.org/forum/rdf.php?mode=m&l=1&n…

リクエストのメソッドを取得する

actionクラス内 $this->getRequest()->getMethod() 戻り値:(integer) sfRequest::GET / sfRequest::POST など。 ソース:/lib/symfony/request/sfRequest.class.php

auto_link_text()

テンプレート側で使用できるTextHelper関数。 文字列中のURLやメールアドレスを見つけ出してリンク(Aタグ)を自動的に設定する。 テンプレートにてTextヘルパーをincludeしておく必要がある。 使用方法は以下の通り。 'blank' ) ) ); ?> パラメータ $text …

symfonyのモデルについて

schema.ymlの書き方などについて http://develop.ddo.jp/symfony/book/jp/1.0/model.html

propelユーザーガイド

http://propel.phpdb.org/trac/wiki/Ja/Users/Documentation/1.2/UserGuide

symfonyでアクションにアクセス制限を設定する方法

symfonyではユーザーセッションで認証管理を行うことができるが、ユーザーの認証状態に応じてアクションを実行するかどうかを設定することができる。 http://develop.ddo.jp/symfony/book/jp/1.0/security.html

symfony(sfMail)で日本語メールを送信する方法

普通に mb_send_mail() でゴリゴリ書くのではなくて、symfony のテンプレート機能を使用してメールを送信することができる。 ただし、日本語(JIS)メールを送信する場合は自前でエンコード変換が必要。 http://develop.ddo.jp/symfony/book/jp/1.0/email.ht…

symfonyで現在のモジュール名を取得する方法

symfony で現在のモジュール名やアクション名は現在のコンテキストを参照すればよい。 http://it.kndb.jp/entry/show/id/580 以下のようになる。 $module_name = sfContext::getInstance()->getModuleName(); ※templatesで使用する場合 $module_name = $sf_c…

symfonyでバッチプロセスを書く方法

symfonyのsf_sandoboxを解凍するとあらかじめ「batch」というディレクトリがあるけど、ここにどういったファイルを入れれば動くのか。 http://develop.ddo.jp/symfony/book/jp/1.0/batch.html 基本的には定数の設定を行った後、app ディレクトリ内のアプリケ…