2008-01-01から1年間の記事一覧

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

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

(?Ppattern)という正規表現について

上で説明した symfony のルーティング処理で、パラメータ名を含むパターンなどがコンパイルされると、「(?Ppattern)」という正規表現になります。この正規表現ですが、マッチしたパターンを後方参照する際に、名前で取り出すための記法です。 Perlの正規表現…

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

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

JIS規格でのカタカナ長音表記について調べてみた

symfonyのドキュメント翻訳の校正を少しずつ手伝っていますが、そのプロジェクトの中で「カタカナの表記はJISに合わせようか」というような話がありました。 お恥ずかしながら、これまでJISの表記規格を読んだことがありませんでしたので、この機会に調べて…

sfValidatorPass

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

しまった

↓の記事を書いた時に、思わず「*」を2つつけて見出しを書いてしまっていたようで訂正しました・・・。 はてダ慣れしてないですね・・・。

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

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

Symfony1.2リリースのアナウンス

本家ブログ symfony 1.x legacy website「ちょっと早いけど、クリスマスプレゼント」とのことですw Admin Generatorとかまだ試してないのですが・・・。まだ開発コミュニティに貢献できるほど内部を理解していないので、時間見つけてゴリゴリいじらないとで…

Symfonyのカスタムタスク(バッチ)を作成する方法

バッチ処理用にSynfonyのタスクを作成するには、以下のコマンドでタスクのテンプレートを生成します。 symfony generate:task <TASKNAME> symfony 1.x legacy website</taskname>

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に置き換える感じです。 こういう方法はアリですねぇ。 私はこれまでに自…

Apacheの起動時に警告が出ていてハマッたのでメモ

Webminからウェブサーバーにバーチャルホストを作成したら、Apacheの起動時に次のような警告が出ていました。 [warn] NameVirtualHost *:80 has no VirtualHostsこれ、分かってみればショボイミスなのですが、VirtualHostを設定する時にポートを指定しなかっ…

form['hoge']とformFieldSchema['hoge']の違い

sfFormとsfFormFieldSchemaはどちらもArrayAccessインターフェイスを実装しており、 $form['hoge'] $formFieldSchema['hoge'] というように、フォーム要素の識別名でアクセスできます。 これらは両方とも、フォーム要素に対応するsfFormFieldオブジェクトを…

Symfonyと格闘・・・

ここ何日かアレコレメモしながらSymfonyと格闘していて、特にフォーム周りの実装について研究していたのですが、ようやく出口が見えてきました・・。おそらく多くの人も既に同じ問題に取り組んでいることだと思いますが、フォームの「確認画面」をスマートに…

sfWidgetSchemaの設定変更はsetWidgetsの後で

sfForm派生クラス内でフォーム要素の設定を行う場合、 sfForm->setWidgets()でのウィジェットの初期化 sfForm->widgetSchema->setLabelsでラベルの設定 sfForm->widgetSchema->setNameFormatでフォーム要素のNameフォーマットの変更 などを行いますが、sfFor…

sfValidatorSchemaのオプションを変更する

フォーム定義クラス(sfForm派生クラス)内でバリデーションの設定を行う場合、SymfornyのFormsドキュメントでは以下のようなサンプルコードになっています。http://symfony.xrea.jp/1.1/forms_book/02-Form-Validation.html 「バリデータ」 setValidators(a…

条件に従ってアクションを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…

FORMタグを生成するrenderFormTagメソッド

Google Code Archive - Long-term storage for Google Code Project Hosting.の「新しい sfForm メソッド」参照sfForm::renderFormTag()を使用すると、フォームの開始タグを上手く生成できます。

sfWidgetで表示するフォーム要素のラベルの変更

http://symfony.xrea.jp/1.1/forms_book/01-Form-Creation.htmlの「ラベル」の項によると、sfFormのwidgetSchema->setlabelsやwidgetSchema->setLabelを使用する方法が紹介されていますが、ウィジェットのコンストラクタへのオプションで直接labelを指定する…

sfWidgetFormDateRangeの初期化方法と表示フォーマット

●月●日~●月●日という日付の範囲を選択する場合に、sfWidgetFormDateRangeを使います。 sfWidgetFormDateRangeには、開始日用と終了日用にそれぞれsfWidgetFormDate要素を作成します。 また、全体のフォーマットは「template」というオプションで変更できます…

sfWidgetFormDateの表示フォーマット

sfWidgetFormDateを使用した日付選択は、デフォルトでは次のような要素が表示されます。 [ 月 ▼]/[ 日 ▼]/[ 年 ▼] この表示を「年月日」に変えたい場合は、sfWidgetFormDateに渡すオプション「format」で変更します。 '%year%年%month%月%day%日' ) ) ?> ち…

単一チェックボックス

sfWidgetFormChoiceは複数の値からの選択を前提としたものですが、オン/オフを指定するような単一のチェックボックスの場合は、sfWidgetFormInputCheckboxを使用します。 setWidgets( array( '同意'=> new sfWidgetFormInputCheckbox( array( 'value_attrib…

sfWidget系クラスの初期化チェーン

例:sfWidgetFormChoice1.sfForm派生クラス内にて、各フォームへの要素割り当て setWidgets( array( 'options'=> new sfWidgetFormChoice( array( 'choices'=>array( 'value1'=>'name1', 'value2'=>'name2'), 'multiple'=>true, 'expanded'=>true ) ) )); ?>…

sfWidget系クラスごとの必須オプション/対応オプションの調べ方

例:sfWidgetFormChoice~SYMFONY_LIB_DIR/widget/sfWidgetFormChoice.class.php configureメソッドが以下のように定義されています。 addRequiredOption('choices'); 44 45 $this->addOption('multiple', false); 46 $this->addOption('expande…

sfWidgetでチェックボックスなどを表示したい場合

sfWidgetFormChoiceを使用します。 sfWidgetFormChoiceのコンストラクタに渡す第1パラメータのオプションで、multipleとexpandedがあり、この値の組み合わせでラジオボタンやチェックボックスになります。 multiple=>false, expanded=>false :単一選択リス…

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

PDOStatementはTraversableインターフェイスを実装

PHP: PDOStatement - Manual PDOStatement implements Traversable {となっているように、PDOStatementクラスはTraversableインターフェイスを実装しています。 なので、execute()を実行したPDOStatementオブジェクトを直接foreach()に突っ込んでループさせ…

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

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