すみません、このエントリ書くまで気づきませんでしたが、前回示したフォルダツリーで、ビュースクリプト関連で1階層抜けてました。具体的には「htdocs/zf1/application/views/scripts/index/」の「scripts」部分が抜けてました。どうもすみませんでした。
気を取り直して、本題です。
少し期間が空いてしまいましたが、前回の続きでアクションコントローラを扱います。前回はデフォルトのアクションメソッド(indexAction)のみの実装でしたが、まずは2つ目のアクションメソッドを実装するところからはじめましょう。
アプリケーションは前回のものをそのまま流用しますので、これからやる作業は
/application/controllers/IndexController.phpを以下のようにします。
<?php require_once 'Zend/Controller/Action.php'; // IndexController class IndexController extends Zend_Controller_Action { // indexアクション public function indexAction() { $this->view->assign( 'message', 'ようこそ Zend Frameworkへ' ); } // 今回追加したsecondアクション public function secondAction() { // indexActionと同様にメッセージをassignする $this->view->assign( 'message', '2つ目のアクション' ); } }
対応するsecond.phtmlは、とりあえずindex.phtmlをそのままコピーしてリネームしてください。
ここまでの作業で、ファイル一式は以下のようになります。
以降、基本的には、「アクションメソッドを増やしたら、対応するビュースクリプトを追加する」というような拡張方法になります。
さて、せっかくアクセスできるURLが2つに増えたのに、それぞれいちいちURLを直接打ち込んでいたら面倒この上ないので、それぞれのアクションメソッド(のビュー)からお互いにリンクを張ってみることにします。
ビュースクリプト中に直接記述してもいいのですが、リンクアドレスの情報はコントローラ側で管理し、ビュースクリプトはそれをレンダリングするだけに分離するのが筋だと思いますので、そのようにしてみます。
まずは2つのアクションメソッド内で「$this->view」にリンクさせるアドレスをassignさせます。こんな感じでしょうか。
<?php require_once 'Zend/Controller/Action.php'; // IndexController class IndexController extends Zend_Controller_Action { // indexアクション public function indexAction() { $this->view->assign( 'message', 'ようこそ Zend Frameworkへ' ); // secondActionへのリンクをビューへ追加 $this->view->assign( 'link', 'index/second' ); } // secondアクション public function secondAction() { $this->view->assign( 'message', '2つ目のアクション' );
セコメントをする