ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ZendにおけるMVC(Javaフレームワークとの違い)その3

2012-11-07 13:26:18 | PHP
シリーズ「ZendにおけるMVC(Javaフレームワークとの違い)」の続き

前回は、Zendの画面構成の問題から、こうするとうまく行くという画面遷移の例を書いた。

具体的には、このようにする。
1.1つの画面につき
    1つのコントローラー
    1つのViewのフォルダーを用意

2.画面に対応するViewのフォルダーには
   index.phtmlに、表示する画面内容を書く
   ボタン等、イベント(アクション)が起こるところについては、
   アクション先(例:フォームのactionで指定する先)を
     画面名/自分で勝手につけたアクション名
   とする

3.画面に対応するコントローラーでは、
  3-1)indexActionと(index.phtmlの表示のため)
    上記2で挙げた「自分で勝手につけたアクション名」Action
    を作成する。

  3-2)上記3-1で作った、
    「自分で勝手につけたアクション名」Actionの
     最後(に実行する部分)で、

      $this->_forward('index','画面名'); 

     として、次画面に遷移させる
     (indexと書いてあるのは、2によって、index.phtmlが
      作成されることが保証されているから)



この方法だと、Actionから、フォワードすることになり、
JavaのStrutsフレームワークに対応する。
具体的には、

       Struts      Zend

画面    画面名.jsp    画面名/index.phtml
Action   各Actionクラス  画面名コントローラーの各Actionメソッド
フォワード     Actionの最後で指定




となる。

今回は、具体的な、作成方法を例に基づいて書いてみる




■例について

昨日、紹介した例について作成する。
つまり、
今、2つの画面がある。

・はじめに、この画面が表示される。

これを、画面名indexとしよう
そして、この画面のボタンを、kotaeという名前にする。

・上記の画面のボタンが押されると、この画面が表示される。


これを、画面名ansとしよう
そして、この画面のボタンを、topという名前にする。

今回は、このWebアプリをZendAdd2という名前で作成する




■作成準備

作成に取り掛かる際に、
apacheのドキュメントフォルダ(htdocs)の下に、

ZendAdd2というフォルダを作成し、そのフォルダ内に、

.htaccess
index.html

と言うファイルと、

zendapps

というフォルダを作成する(バージョンによっては、zendappsじゃないかも)
このとき、.htaccessというファイルはWindowsでは作れない

・・・作れないはずなのだが、私の場合、1回何かの弾みでできて?
(なにかを解凍してできた?)その後、フォルダごとコピー、そのファイルを修正
している。これで問題なく動作している。

.htaccessの内容は、以下のとおり


php_flag magic_quotes_gpc off

RewriteEngine on
RewriteBase /ZendAdd2/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php




index.phpの内容は、以下のとおり

<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('zendapps/controllers');




最後に>はいらない(以下、基本的にそう)




■1.1つの画面につきコントローラーとビュー作成

上述のzendappsの下に、controllers,views,models
というフォルダを作成し、controllers,viewsについては、
昨日示した構成(下のとおり)で、ファイルを作成する
(中身については後述)


controllers
  |-IndexController.php
  *-ansController.php

views
 *-scripts
    |-index

    |  |

    |  *-index.phtml

    *-ans

      |

      *-index.phtml








2.画面に対応するViewのファイル

画面indexに対応する画面のファイル
views/scripts/index/index.phtml
の中身は、こんなかんじ。

<html>
<title>add</title>
<body>
<form action="/ZendAdd2/Index/kotae" method="post">
<?php echo $this->formText('add1',''); ?> +
<?php echo $this->formText('add2',''); ?> =
<?php echo $this->formSubmit('','Add'); ?>
</form>
</body>
</html>




ボタンのアクションkotaeは、Formのactionで指定されている。

画面ansに対応する画面のファイル
views/scripts/ans/index.phtml
の中身は、こんなかんじ。

<html>
<head><title>answer</title>
<body>
<?php echo $this->escape($this->kotae);?>
<form action="/ZendAdd2/Ans/top" method="post">
<?php echo $this->formSubmit('','Top'); ?>
</form>
</body>
</html>




ボタンのアクションtopは、Formのactionで指定されている。




■画面に対応するコントローラー

画面indexに対するコントローラー
controllers/IndexController.php
に書かれる内容は、こんなかんじ。


<?php
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
}

public function kotaeAction()
{
$req = $this->getRequest();
$add1 = $req->getPost('add1');
$add2 = $req->getPost('add2');
$this->view->assign('kotae',$add1+$add2);
$this->_forward('index','ans');
}

}




画面のためのindexActionと、
ボタンkotaeが押されたときに対応するkotaeActionがあり、
kotaeActionに対応する画面は、ここではなく
$this->_forward('index','ans');
で、ans画面に行くようにしています。

-----

画面ansに対するコントローラー
controllers/AnsController.php
に書かれる内容は、こんなかんじ。


<?php
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Session.php';

Zend_Session::start();

class AnsController extends Zend_Controller_Action
{
public function indexAction()
{
}
public function topAction()
{
$this->_forward('index','index');
}
}





画面のためのindexActionと、
ボタンtopが押されたときに対応するtopActionがあり、
topActionに対応する画面は、ここではなく
$this->_forward('index','index');
で、index画面に行くようにしています。




次回はモデルについて



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「無制限クラウドストレージ:500円/月」ってあるけど、成り立つの?

2012-11-07 10:55:33 | Weblog
ここなんだけど・・・

https://pogoplug.com/ja/cloud


5GBだと無料なんだって。
無制限だと、500円・・・う~ん、なりたつのか・・?

・・・わからん・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする