Entries


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1188-9c6e11af

ZendFrameworkの練習:Hello World!の表示を目指す話


ZendFrameworkの勉強始めましたというエントリーから半年経ちました.

         ___
       / ⌒  ⌒\
      / (⌒)  (⌒)\
    /   ///(__人__)///\  そろそろZendFrameworkも使えるようになってるはずだお
     |   u.   `Y⌒y'´    |
      \       ゙ー ′  ,/
      /⌒ヽ   ー‐    ィヽ
      / rー'ゝ       〆ヽ
    /,ノヾ ,>      ヾ_ノ,|
    | ヽ〆        |´ |


いや,まあ当然ですが何にも進展していません.

ということでZend Framework入門(2):Hello World!アプリケーションの作成というページを参考にHelloWorld!の表示にチャレンジしました.

とりあえず書いてある通りに打ってみると・・・

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php:241 Stack trace: #0 C:\php\ZendFramework\library\Zend\Controller\Front.php(936): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\php\ZendFramework\library\Zend\Controller\Front.php(211): Zend_Controller_Front->dispatch() #2 C:\workspace\*************\html\index.php(3): Zend_Controller_Front::run('../application/...') #3 {main} thrown in C:\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php on line 241



         ___
        / .u   \
      /((○)) ((○))\
/⌒)⌒)⌒. ::::  (__人__) l_j :::\     /⌒)⌒)⌒)
| / / /     |r┬-|     | (⌒)/ / / //
| :::::::::::(⌒) U .| |  |    /   ゝ  :::::::::::/  なんかエラー出たよ!エラー!!!
|     ノ    | |  |    \  /  )  /
ヽ    /    └ー.┘    ヽ /    /





   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)
. |     (__人__)
  |     ` ⌒´ノ
.  |         }  ミ        ピコッ
.  ヽ        } ミ  /\  ,☆____
   ヽ     ノ    \  \ /     \
   /    く  \.  /\/ ─    ─ \
   |     `ー一⌒)  /   (●)  (●)  \  あっ
    |    i´ ̄ ̄ ̄ \ |      (__人__)     |  パスのスペルが間違ってた
               \_   ` ⌒´    /
                /          \

3つも間違っていて時間を食いました.

しかし,

         / ̄ ̄ ̄ \
      /   :::::\:::/\
     /    。<一>:::::<ー>。
     |    .:::。゚~(__人__)~゚j  こんどはスペルミスがないのにビューが表示できないお
     \、   ゜ ` ⌒´,;/゜
    /  ⌒ヽ゚  '"'"´(;゚ 。
   / ,_ \ \/\ \
    と___)_ヽ_つ_;_ヾ_つ.;.

入門サイトにあるとおり書き,アクションまでは行っているのにビューの.phtmlファイルが読み込まれません.上のサイトにあるとおりに書いていて,パスも全部あっているのに動かないのは何故なのでしょう.コントローラとビューしか使っていないので,ディレクトリの構成があっていれば表示されるはずなのですが.

わからないので手元の本を見てみると
application/views/scripts/コントローラ名/アクション名.phtml
という構成でビューが読み込まれるのは自動レンダリングモードが有効な場合のみと書いてありました.

ビューが読み込めないのはこれでした.上記入門サイトではViewRenderを無効にできます.と途中に紹介してあるのですが,これを記載してしまうと同チュートリアルにあるビューが読み込まれなくなるのでした.

Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);

↑これを書くと自動レンダリングモードが無効になるのですね.

        ノ L____
       ⌒ \ / \
      / (○) (○)\
     /    (__人__)   \
      |       |::::::|     |   クソー
     \       l;;;;;;l    /l!| !  いらない紹介するから詰まったじゃないか!!
     /     `ー'    \ |i
   /          ヽ !l ヽi
   (   丶- 、       しE |そ  ドンッ!!
    `ー、_ノ       ∑ l、E ノ <
               レY^V^ヽl

   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)
. |     (__人__)   いや、お前がちゃんと調べればいいだけだろ
  |     ` ⌒´ノ
.  |         }
.  ヽ        }
   ヽ     ノ        \
   /    く  \        \
   |     \   \         \
    |    |ヽ、二⌒)、          \


というわけでなんとかCVでのHelloWorld表示までは達成できました.

今回の復習
:ZendFrameworkのディレクトリ構成を確認しコントローラからビューを呼び出した.(include_pathなどは設定済みであるというところから話を進めます.)

今回の例で使用したディレクトリの構成は以下の図の通りです.
ZendFrameworkディレクトリ構成
上図の/applicationと/htmlディレクトリの名前は任意です.この例ではルートに配置しました.要するにルートにあるディレクトリは二つだけで動いてくれます.

ZendFrameworkはまずフロントコントローラにアクセスするので/htmlにフロントコントローラであるindex.phpを置きました.
フロントコントローラ/html/index.phpのソースです.


お次は/htmlに配置する.htaccessファイルです.
RewriteEngine on
RewriteBase /html
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

これも特に問題なくお手本通りです.


コントローラです./application/controllers/にコントローラを配置します.名前はIndexController.phpでこれも基本通りなので特に問題ないですね.


次にビューを配置します.上にも書きましたけど自動レンダリングモードでは決まった配置でビューファイルが読み込まれます./application/views/scripts/コントローラ名/アクション名.phtmlというビューを用意すればいいので,/application/views/scripts/index/index.phtmlというファイルを作ります.

中身はただのhtmlです.


ここまでやって/html/にアクセスするとHello World!が表示されました.
ZendFrameworkでHello World

以下のようにコントローラやアクションにアクセスしてもHello Worldが表示されます.
/html/index
/html/index/index

おまけですけど,ディレクトリ構成図にErrorController.phpというファイルとビューの中にerrorディレクトリがあり,error.phtmlが置いてあります.これはエラーが出た場合に呼ばれるエラー処理用コントローラです.
/application/controllers/にErrorController.phpを置きます.


そしてエラーコントローラが呼ばれたときに表示するビューを用意します.
/application/views/scripts/error/error.phtmlというファイルを作りました.


これらを用意して例えば/html/hogeとアクセスするとhogeというアクションは無いのでエラーページが表示されます.

ということでHello World!についてはもう大丈夫でしょう!!

マニュアルで参考になりそうなところ
Zend_Controller クイックスタート
そういえば導入のことをクイックスタートと言うみたいですね.知らなかったです.

PHPフレームワーク Zend Framework入門PHPフレームワーク Zend Framework入門
(2007/09/13)
藤野 真吾

商品詳細を見る

0件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1188-9c6e11af

Appendix

プロフィール

川崎修

  • Author:川崎修
  • インターネット大好き!
    調布周辺で自宅警備してます



    メール:pugiemonn@gmail.com
    skype:pugiemonn
    twilog:Twilog
    mixi:mixi
    facebook:facebook
My Profile by iddy
FC2ブログ

カレンダー

04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

最近の記事

Twitter

コミュニティ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Adsense

月別アーカイブ

はてぶ数

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。