- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PHP-symfony/コントローラ/全般 へ行く。
コントローラ
アクションとテンプレートの構成例
showアクションを作成。URLは http://localhost/frontend_dev.php/goods/show になる。
- actions/actions.class.php
<?php class goodsActions extends sfActions { public function executeShow() { $this->mesg = 'SHOW!'; } }
- goods/templates/showSuccess.php
<html> <body> <?php if ($mesg): ?> [<?php echo $mesg ?>] <?php endif; ?> </body> </html>
アクションからテンプレートに値を渡す
- アクション
public function executeIndex() { $this->setVar('foo', 'bar'); $this->foo = 'bar'; }
- テンプレート
<html><body> <?php echo $foo ?> <?php echo $bar ?> </body></html>
アクションでテンプレートを指定する
public function executeIndex() { $this->setTemplate('foo'); }
apps/frontend/modules/XXX/templates/fooSuccess.php が呼ばれる。
リクエストオブジェクト
public function executeIndex(sfWebRequest $request) { $name = $request->getPamareter('name', 'default_name'); }
リダイレクト
$this->redirect('/error/message');
(メソッドの)転送
$this->forward('top','index'); # topモジュールのindexメソッドへ転送
セッション
$this->getUser()->setAttribute('mesg', 'エラーが発生しました'); # 設定 $mesg = $this->getUser()->getAttribute('mesg'); # 取得 $mesg = $this->getUser()->hasAttribute('mesg'); $this->getUser()->getAttributeHolder()->remove('mesg'); # 削除
<html><?php $sf_user->getAttribute('mesg')?></html> # テンプレートで参照する
http://symfony.xrea.jp/1.2/book/06-Inside-the-Controller-Layer.html#user.session
フラッシュ
$this->setFlash('mesg', 'エラーが発生しました'); # あるリクエストで設定する ↓ $mesg = $this->getFlash('mesg'); # 次のリクエストで取得する ↓ # さらに次のリクエストではもう消えていて取得出来ない
テンプレートでフラッシュを参照する
<?php if($sf_flash->has('mesg')): ?> <?php $mesg = $sf_flash->get('mesg') ?> <?php endif ?>