WebDebugを一時的に無効にする方法

訳あってsymfony 1.2用に作られたsfCryptoCaptchaPluginをsymfony1.0用に修正してます。現在ほぼ作業が終わってこちらのリポジトリに最新版があります。

コーディング時にはまったのが、うまくCAPTCHAイメージがが出力されずエラーがでる事でした。 原因を調べるため、バイナリダンプを行った所なんと、WebDebugツールバーが出力されており、バイナリを壊していました。

WebDebugツールバー自体は通常の開発で活躍していますので、CAPTCHAの出力の時だけWebDubgツールバーを無効にしたいと思いましたが、すぐにどうやるか思いつかなかったのですが以下のようにしてうまくいきました。

この投稿の続きを読む »WebDebugを一時的に無効にする方法

PropelBehavior使ってますか?

symfonyは標準的にpropelというO/Rマッパライブラリを使用しています。このpropelに対して独自の処理を付け加える機構がsfPropelBehaviorです。

この機構を使うことで、たとえば『saveしたときに自動的に更新者のIPアドレスを保存する』などといった透過的処理を、簡単に追加することができます。

本日記では、そのPropelBehaviorの使い方を説明します。実装の際に便利そうなテンプレートも用意しましたので、もしよければ使ってみてください。なお、本稿ではこのテンプレートを使用しています。

この投稿の続きを読む »PropelBehavior使ってますか?

セレクトボックスの先頭を空にしたい

symfonyのテンプレートではFormHelperを使うことでinputタグ・textareaタグなどをテンプレートで使わなくなりました。 その中でも、セレクトボックスを作成する場合はselect_tagとoptions_for_selectの2つの関数を扱います。 2つの関数の使い方を実装例を交えながら説明したいと思います。

select_tagとoptions_for_selectの2つのヘルパー関数を使ってコードを書いてみましょう。

< ?php echo select_tag("drink",options_for_select(array(1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

以下のように表示されます。

 

select_tagを使えば簡単にセレクトボックス作ることができますが、問題はセレクトボックスの先頭を空にしたいという要件はないでしょうか?

以下のようなケースです。

先頭を空にしたいのでoptions_for_selectの引数のarrayに空の配列を加えてみました。

< ?php echo select_tag("drink",options_for_select(array('' => '', 1 => 'コーラ', 2 => 'お茶', 3 => '水'))) ?>

しかし、先頭にわざわざ空の配列を作るのはコードの見栄えが悪いです。 これをoptions_for_selectの特殊なオプションで回避したいと思います。

この投稿の続きを読む »セレクトボックスの先頭を空にしたい

フィードアグリゲータを簡単に作る

先週のアップデートsfZendPluginが更新しました。これを使って、symfonyでさくっとサイトのRSSフィードを一つにまとめて表示するアグリゲータを作成してみます。 今日は、もろもろの復習も兼ねてプロジェクトのセットアップから順序を追って説明します。

本アプリケーションは実用には不足しています。symfonyアプリケーション構築の参考にどうぞ。また、不具合等有りましたらコメント頂けると助かります。

この投稿の続きを読む »フィードアグリゲータを簡単に作る

Emacsen必携!sfEmacsPlugin

煽り文句から始まりまして恐縮です。30分くらいで書いた拙作のプラグインを紹介します。 sfEmacsPluginはsymfonyコマンドにemacsタスクを追加します。emacsタスクは深い階層になりがちなsymfonyプロジェクトのパスを解決しファイルのオープンを簡単にします。

Emacsen かつ Symfonyプログラマという超マイノリティ向けPluginです

この投稿の続きを読む »Emacsen必携!sfEmacsPlugin

symfony upgrade 1.0でbookmarkをアップグレード

Symfony 0.6.3ベースでつくられたSymfonyのサンプルbookmarkプロジェクトをSymfony1.0.0-betaに対応させました。Symfonyにはアップグレードコマンドが付属しています。

symfony upgrade 1.0

とすることで、プロジェクトのソースコードを書き換え自動でアップグレードします。このアップグレードコマンドが何をしているのかを

svk diff
を利用し調査してみました。

この投稿の続きを読む »symfony upgrade 1.0でbookmarkをアップグレード

Helperの日本語対応

Symfonyで実際に開発を始めてみると時折、文字化けなど予期せぬことが発生しました。

原因を調べてみると文字列を扱うHelperにあるようです。それもそのはず、日本語はマルチバイト文字なので通常のString関数を使用していれば不具合が起こる可能性はあります。 ということで文字列を扱う関数をマルチバイトに対応する関数に置き換えたHelperが必要だと思いました。

今回はその対処について幾つか上げて行きます。

この投稿の続きを読む »Helperの日本語対応

Formの入力値をValidatorを使って変換する

SymfonyはYAMLを使ってvalidationを設定することができます。詳しい説明に関しては本家のドキュメントを参照してください。

HTML_QuickFormというものをご存知でしょうか?

ルールやフィルタを設定してFormで送信された値の入力のチェックをおこなうことができます。 ルールは送信された値の入力規則にあたります。 フィルタは送信された値から余計な文字の削除や変換をおこなう機能です。 例えばtrimなどをactionで毎回書く作業をフィルタを実装することで省くことができます。

Symfonyではvalidationクラスを作成することで様々な入力規則の作成が可能です。 QuickFormでいうルールに対して対応していますが、フィルタには対応していません。

validationを利用してtrimmbConvertKanaのフィルタを実装してみます。

この投稿の続きを読む »Formの入力値をValidatorを使って変換する

Escaping Outputに対応した新JSONヘルパー

以前、PHPからJavascriptへの値の引き渡しに便利なSymfonyHelperのJsonHelperを書きました。昨日、JsonHelperが先月リリースされたSymfonyの最新安定板0.6.2で動作しないと報告を受け調査しました。

正しく動作しない原因は、先日Symfonyの最新安定板0.6.2から組み込まれたEscapeing Outputでした。 Escapeing Outputを利用するとテンプレートで配列がsfOutputEscaperArrayDecoratorのオブジェクトになってしまい、PEARのServices_JSONがこのオブジェクトを扱えないためエラーになっていました。

新版のJsonHelperを作成しましたのでtracにアップしておきました。

ついでに、本家のWikiにもメモしておきました。

Zend FrameworkのライブラリをSymfonyから利用する

right

4月18日にZend Frameworkのプレビュー0.1.3がリリースされました。 開発環境Zend Studioとの統合やNingなど、Symfonyを含む他のライブラリとは別の角度から興味を持っています。 Zend Frameworkの現在のバージョンをざっとみると、フレームワークとしての機能(PoEAA)の網羅性は低くい代わりに、ライブラリとしては充実しており、フレームワークという名のライブラリ集としてPEARの後継を狙っているのかな?と勝手に想像してしまいます。

さて、なんでSymfonyの開発日記でわざわざZend Frameworkの話を出したかというと、今後充実していくZend FrameworkのライブラリをSymfonyからちょっと使ってみたくなったからです。

今回は試しにZend_Service_AmazonをSymfonyから利用してみたいと思います。 この投稿の続きを読む »Zend FrameworkのライブラリをSymfonyから利用する