FrontPage

注:symfony本体を開発してるわけではありません。


sfAction

リダイレクト

redirect()を使う。

$this->redirect('module/action');

これだとヘッダ出力後にも処理が走ってしまう。次のようなコードでは" test "が出力される。

$this->redirect('module/action');
echo "test";

リダイレクト後の処理を行わないようにするにはreturnすればよい。

return $this->redirect('module/action');

sfForm (symfony 1.2)

複数のパラメタを同時にバリデーション

sfPostValidator?を使う。

http://d.hatena.ne.jp/Fivestar/20100118/1263788888

メンテナンスモード(unavailable)

symfonyにはアプリケーションを無効にする機能がある。

例えば、prod環境のfrontendアプリケーションを無効にするには以下のコマンドを叩く。

$ symfony disable frontend prod

無効にされたアプリケーションが呼び出された場合、default/unavailableが呼び出される。標準だとsymfonyのデフォルト画面が表示されるのでイケてない。

方法その1:default/unavailableアクションの追加

defaultモジュールにunavailableアクション(と、対応するテンプレート)を追加することで、unavailabe画面のカスタマイズが可能。

$ vi apps/frontend/modules/default/actions/actions.class.php

executeUnavailableメソッドを追加する。

public function executeUnavailable()
{
}

テンプレートを適当にカスタマイズ!

$ vi apps/frontend/modules/default/templates/unavailableSuccess.php

方法その2:web/errors/unavailabe.phpファイルを追加

モジュール・アクションの追加と同様にファイルを追加してもよい。

Internal Server Errorのトラップ

以下のファイルを追加する。

  • web/errors/error500.php

コントローラがクラッシュした場合に呼び出されるのでsymfonyの機能は使えない。 エンドユーザ向けのコンテンツを正しく書いておくべき。

エラーメッセージやスタックトレースも取得できるようだ(試してない)。

  • string $name
  • string $message
  • array $traces
  • ? $settingsTable
  • ? $requestTable
  • ? $responseTable
  • ? $userTable
  • ? $globalsTable
  • string SYMFONY_VERSION
  • string PHP_VERSION

バイナリの出力

sfView(sfPHPView)は、layout.phpや〜Success.phpを組み立てるように設計されており、バイナリストリームを出力するために設計されているわけではありません。バイナリストリームを出力したい場合、アクション内で直接ストリーム出力を行う方が効率的です。

public function executeIndex()
{
  $this->getResponse()->setStatusCode(200);
  $this->getResponse()->setHttpHeader('Content-Type',$contenttype);
  $this->getResponse()->setHttpHeader('Content-Length',$length);

  $this->getResponse()->sendHttpHeaders();

  echo $buf;

  return sfView::NONE;
}

アクションの戻り値でsfView::NONEを返せばViewは実行されません。

モデル更新時にタイムスタンプが入らないようにする

config/propel.iniを以下のように書き換える。

- propel.addTimeStamp = true
+ propel.addTimeStamp = false

参考: http://d.hatena.ne.jp/kazumeat/20100208/1265620102 (そのままですが…)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-06-25 (金) 15:29:00 (2585d)