「Symfony」カテゴリーアーカイブ

urlパラメータに使用できない文字

symfonyでは、urlパラメータに以下の文字は使用できない。
? & /
「?」と「&」は、routing処理で区切り文字になっているため。
「/」は、apacheのpathinfoで%2Fを使用できないからだろう。これは、apacheでpathinfoを使用しているサイトはみな同じだ。
voxでは「?」と「&」はOKだが、「/」はつけることはできるが、「/」タグの記事一覧は見ることはできない。Not Foundになる。
movable type は「?」「&」「/」とも、タグとしてつけることはできない。

デバッグメッセージの出力方法

// in an action
$this->logMessage($message, $level);
// in a template
<?php echo log_message($message, $level) ?>

例:

<code>
// in a template
<?php use_helper('Debug') ?>
<?php echo log_message('{mainActions} been there', 'err') ?>
// in an action
$this->getLogger()->info($message);
$this->getLogger()->err($message);
$this->getLogger()->warning($message);
// from anywhere in your application
sfContext::getInstance()->getLogger()->info($message);
sfContext::getInstance()->getLogger()->err($message);
sfContext::getInstance()->getLogger()->warning($message);
</code>

There are 8 levels of log messages:
emerg, alert, crit, err, warning, notice, info, debug
http://www.symfony-project.com/book/trunk/debug

forwardすると、actionのインスタンス変数が引き継がれない

forwardすると、$thisのインスタンス変数が引き継がれない。(forward先のアクションのviewで元アクションでセットしたインスタンス変数が使えない。)
なので、forwardする代わりに、
return array('api', 'errorSuccess');
とした。
0.6.3ではこれでOKだったが、0.7.1914では、template/xxxxArray.phpが見つかりませんというエラーになる。(xxxxはアクション名)
したがって、
forwardを使い、forward先で使用する値は、$this->getRequest()->setAttribute($name, $value)
で保存しておく。

sfRequest->addHttpMeta($key, $value, $override = true)は、$keyをnomalizeしてセット

sfRequest->addHttpMeta($key, $value, $override = true)は、$keyをnomalizeしてセットするので注意!
たとえば、content-typeはContent-Typeとなる。
そのため、view.ymlでhttp_metasを設定して、addHttpMetaで設定したkeyを上書きする場合、上記の例では、
content-type: text/xml
では上書きされないようである。
Content-Type: text/xml
とすると、うまくいった。
両方書いてもokだった。

sfAction->sendEmail($module, $action)

sfAction->sendEmail($module, $action)

The ->sendEmail() method of the sfAction class is a special kind of ->forward() that executes another action but comes back afterward (it doesn't stop the execution of the current action). In addition, it returns a raw email that can be written into a log file (you will find more information about the way to log information in the debug chapter of the symfony book).

http://www.symfony-project.com/book/trunk/email