タイトルの変更・追加
action内では設定(変更)しかできない。
既存のtitleに追加をする場合には、テンプレートで行う。
たとえばここのページの設定をsymfonyであらわす場合はこうなる
# apps/myapp/config/view.yml default: http_metas: content-type: text/html metas: title: hpoolの日記
そして、日記を書くページのタイトルは
hpoolの日記 - 日記を書く
というタイトルになる。
これをactionで変えようと試みる例
<?php public function executeEdit() { $title = $this->getResponse()->getTitle(); // とれない $this->getResponse()->setTitle($title . ' - 日記を書く'); // 意図したとおりにはならない }
結局は、templateでやる。(本来のやり方はそうなんだと思う)
<?php // editSuccess.php $sf_context->getResponse()->setTitle( $sf_context->getResponse()->getTitle() . ' - 日記を書く' );
どこを何に書くのがベストなのかがわかってないのがダメなんですよね。。。
追記(2008/12/19 20:50)
- action
- template
- コメントで教えていただいたview.yml
などがあるが、なかなかなじめない。
例えばaction名を変えた場合に、
この3つ目をよく忘れる。今までに何回かあった。
テンプレートなら、なければエラーになるからわかりやすい。
あと、editSuccess:
とかってアクション全部書くのがめんどくさい。
で、どうしたいのかというと、やっぱりテンプレートでやりたい。
でも、テンプレートで$sf_context->getResponse()とかはちょっと。。。
ということで、componentでやってみる。
<?php // editSuccess.php <?php include_component('hoge', 'title', array('before' => 'hpoolの日記 - '))?>
<?php // components.class.php public function executeTitle() { $this->getResponse()->setTitle( $this->getVar('before').$this->getResponse()->getTitle().$this->getVar('after') ); return sfView::NONE; }
やっぱ違うかなーー