トップに戻る ITエンジニア 大和賢一郎
コントローラとアクションとビューの関係カンケイ理解リカイする
1つのコントローラには、複数フクスウのアクションをフクむことが出来デキる。
概念図ガイネンズ下記カキシメす。
コントローラA
                 
     
  アクションa      
                 
     
  アクションb      
                 
     
  アクションc      
                 
     
     
     
     
                 
そして、1つのアクションは、1つのビューに対応タイオウする。
アクションを作成サクセイした場合バアイは、同名ドウメイのビューを作成サクセイしなければならない。
概念図ガイネンズ下記カキシメす。
コントローラA ビューA
                                   
           
  アクションa         ビューa          
                                   
           
  アクションb         ビューb          
                                   
           
  アクションc         ビューc          
                                   
           
           
           
           
                                   
コントローラからビューへアタイワタ場合バアイ、それは、
カクアクションから、対応タイオウするカクビューにタイして、
配列ハイレツで「キーとアタイ」をワタす、ということになる。
概念図ガイネンズ下記カキシメす。
コントローラA ビューA
                                   
           
  アクションa
 
    配列ハイレツ array   ビューa          
                                   
           
  アクションb
 
    配列ハイレツ array   ビューb          
                                   
           
  アクションc
 
    配列ハイレツ array   ビューc          
                                   
           
           
           
           
                                   
このように、アクションaで生成セイセイされたアタイは、配列ハイレツとしてビューa にワタされ
ビューaにて画面ガメン表示ヒョウジされる。
ここで、コントローラAはPHPファイルであり、クラスである。
コントローラAにフクまれるカクアクションは、クラスのメソッドである。
タイして、ビューAはフォルダである(ファイルではない)。
ビューAというフォルダにフクまれるビューa,b,cは、それぞれ、.phtmlファイルである。
概念図ガイネンズ下記カキシメす。
コントローラA.php(ファイル) ビューA(フォルダ)
クラス A                            
           
  function a
 
    配列ハイレツ array   ビューa.phtml    
  アクション                        
           
  function b
 
    配列ハイレツ array   ビューb.phtml    
  アクション                        
           
  function c
 
    配列ハイレツ array   ビューc.phtml    
  アクション                        
           
           
           
           
                                   
コントローラの実態ジッタイはクラスであり、アクションの実態ジッタイはメソッドである。
1つのクラスには複数フクスウのメソッドをフクめることができる。
同様ドウヨウに、1つのコントローラには複数フクスウのアクションをフクめることが出来デキる。
具体グタイレイシメす。
コントローラ:日本ニホン
アクション:東京トウキョウ大阪オオサカ名古屋ナゴヤ
という処理ショリカンガえる。
日本ニホンコントローラ.php(ファイル)
日本ニホンクラス        
     
  東京トウキョウアクション    
                 
     
  大阪オオサカアクション    
                 
     
  名古屋ナゴヤアクション  
                 
     
     
     
     
                 
対応タイオウするビューをクワえると、下記カキになる。
日本ニホンコントローラ.php(ファイル) 日本ニホンビュー(フォルダ)
日本ニホンクラス                          
           
  東京トウキョウアクション       東京トウキョウビュー.phtml  
                                   
           
  大阪オオサカアクション       大阪オオサカビュー.phtml  
                                   
           
  名古屋ナゴヤアクション     名古屋ナゴヤビュー.phtml  
                                   
           
           
           
           
                                   
処理ショリとして、下記カキアタイをアクションからビューへワタすものとする。
日本ニホンコントローラ.php(ファイル) 日本ニホンビュー(フォルダ)
日本ニホンクラス                          
           
  東京トウキョウアクション  
 
とうきょう   東京トウキョウビュー.phtml  
                                   
           
  大阪オオサカアクション     おおさか   大阪オオサカビュー.phtml  
             
 
                   
           
  名古屋ナゴヤアクショ
 
  なごや   名古屋ナゴヤビュー.phtml  
                                   
           
           
           
           
                                   
実装ジッソウイメージを下記カキシメす。
まずは、日本ニホンコントローラ(.php)を作成サクセイする。
JapanController.php
場所バショ
C:\xampp\ZendSkeleton\module\Application\src\Application\Controller
<?php  
 
namespace Application\Controller;  
 
use Zend\Mvc\Controller\AbstractActionController;  
use Zend\View\Model\ViewModel;  
 
class JapanController extends AbstractActionController  
{  
 
}  
ツヅいて、アクション(メソッド)を実装ジッソウする。 日本ニホンコントローラ.php(ファイル)
日本ニホンクラス        
東京トウキョウアクション(メソッド)      
      public function tokyoAction(){     東京トウキョウアクション    
          return new ViewModel(array('key'=>'とうきょう'));                    
      }        
  大阪オオサカアクション    
     大阪オオサカアクション(メソッド)                  
      public function osakaAction(){        
          return new ViewModel(array('key'=>'おおさか'));     名古屋ナゴヤアクション  
      }                    
     
     名古屋ナゴヤアクション(メソッド)      
      public function nagoyaAction(){        
          return new ViewModel(array('key'=>'なごや'));        
      }                    
すると、下記カキのようになる。
<?php  
 
namespace Application\Controller;  
 
use Zend\Mvc\Controller\AbstractActionController;  
use Zend\View\Model\ViewModel;  
 
class JapanController extends AbstractActionController  
{  
    public function tokyoAction(){  
        return new ViewModel(array('key'=>'とうきょう'));  
    }  
      
    public function osakaAction(){  
        return new ViewModel(array('key'=>'おおさか'));  
    }  
      
    public function nagoyaAction(){  
        return new ViewModel(array('key'=>'なごや'));  
    }  
      
}  
ちなみに、この状態ジョウタイで、
にアクセスすると、下記カキエラーとなる。
このエラーを回避カイヒするには、
module.config
日本ニホンコントローラを定義テイギしなければならない。
具体的グタイテキには下記カキのように定義テイギする。
,'Application\Controller\Japan' => 'Application\Controller\JapanController'  
C:\xampp\ZendSkeleton\module\Application\config\module.config.php
そして再度サイド
http://localhost/140323a/application/japan/tokyo
にアクセスすると、またベツのエラーが発生ハッセイする。
これは、東京トウキョウコントローラに対応タイオウする東京トウキョウビューを作成サクセイしていないことが原因ゲンインである。
コントローラを作成サクセイした場合バアイ、それに対応タイオウする同名ドウメイのビューを作成サクセイしなければならない。
では、東京トウキョウビューを作成サクセイする。
日本ニホンコントローラ.php(ファイル) 日本ニホンビュー(フォルダ)
日本ニホンクラス                          
           
  東京トウキョウアクション  
 
とうきょう   東京トウキョウビュー.phtml  
                                   
           
  大阪オオサカアクション     おおさか   大阪オオサカビュー.phtml  
             
 
                   
           
  名古屋ナゴヤアクショ
 
  なごや   名古屋ナゴヤビュー.phtml  
                                   
           
           
           
           
                                   
まずは、ビューを格納カクノウするタメ日本ニホンフォルダ(japan)を作成サクセイする。
そして、japanフォルダ配下ハイカに tokyo.phtml を作成サクセイし、
下記カキのようにコーディングする。
<?php echo $key; ?>  
この状態ジョウタイ再度サイド
http://localhost/140323a/application/japan/tokyo
にアクセスすると、下記カキ画面ガメン表示ヒョウジされる。
ここで、「とうきょう」という文字モジは、コントローラ(のアクション)からビューにタイして
ワタされている、というテン着目チャクモクしてほしい。
では、ツヅいて、大阪オオサカ名古屋ナゴヤのビューも作成サクセイしていく。
日本ニホンコントローラ.php(ファイル) 日本ニホンビュー(フォルダ)
日本ニホンクラス                          
           
  東京トウキョウアクション  
 
とうきょう   東京トウキョウビュー.phtml  
                                   
           
  大阪オオサカアクション     おおさか   大阪オオサカビュー.phtml  
             
 
                   
           
  名古屋ナゴヤアクショ
 
  なごや   名古屋ナゴヤビュー.phtml  
                                   
           
           
           
           
                                   
中身ナカミはいずれも
<?php echo $key; ?>  
である。
この状態ジョウタイで、下記カキにアクセスすると、カク画面ガメン表示ヒョウジされる。
http://localhost/140323a/application/japan/osaka http://localhost/140323a/application/japan/nagoya
ツヅいて、コントローラにアクション以外イガイのメソッドをフクめる場合バアイ具体グタイレイシメす。
概念図ガイネンズ下記カキ
日本ニホンコントローラ.php(ファイル) 日本ニホンビュー(フォルダ)
日本ニホンクラス                          
           
  東京トウキョウアクション  
 
とうきょう   東京トウキョウビュー.phtml  
                                   
           
  大阪オオサカアクション     おおさか   大阪オオサカビュー.phtml  
             
 
                   
           
  名古屋ナゴヤアクショ
 
  なごや   名古屋ナゴヤビュー.phtml  
                                   
           
  任意ニンイのメソッド          
                       
           
                                   
日本ニホンコントローラ(日本ニホンクラス)ナイのメンバメソッドとして、
任意ニンイのメソッドを追加ツイカできる。これはアクションである必要ヒツヨウいので、
アクションで場合バアイは、対応タイオウするビューも不要フヨウとなる。
そして、任意ニンイのメソッドは、カクアクションからすことができる。
具体的グタイテキには、下記カキのような実装ジッソウができる。
まず、任意ニンイのメソッドを実装ジッソウする。
    public function getHoge(){  
        return 'ほげ';  
    }  
これは「ほげ」という文字列モジレツカエすだけのメソッドである。アクションではない。
そして、日本ニホンクラスナイ設置セッチする。
では、東京トウキョウアクションから、getHogeをしてみる。
下記カキのように東京トウキョウアクションをナオす。
    public function tokyoAction(){  
        return new ViewModel(array('key'=>'とうきょう'.$this->getHoge()));
    }  
この状態ジョウタイで、
http://localhost/140323a/application/japan/tokyo
にアクセスすると下記カキのようになる。
「とうきょう」の末尾マツビに「ほげ」が追加ツイカされている。
以上イジョウ