WHAT'S NEW?
Loading...

Yii 1.1 | Mockeryでもっこり2/4

さてさて、本日もMockeryでもっこりしていこうと思う。もっこり。

まずはYiiのシェルyiicをつかって、ベースとなるアプリケーションをさっくさくに作ってしまおうか。

yiicの使い方は簡単だけど、もしわからなかったり、忘れてしまったり、自信がなくなってしまったら、公式サイトを覗いてみればいいだろう。

公式サイトはここだ。
初めに:はじめてのYiiアプリケーションの作成

で、具体的な使い方はこうなる。
framework/yiic webapp <Webアプリ名>


つくろうぜ!Webアプリ!

Webアプリ名を相対パスで指定した場合、どこに作るのか?yiiの直下か?と聞いてくるので、yesとタイプしてEnterすれば問題ない。

  1. $ cd /path/to/yii/  
  2. $ framework/yiic webapp kickass  
  3. Create a Web application under '/path/to/yii/kickass'? (yes|no) [no]:yes  
  4.   
  5.           mkdir /path/to/yii/kickass  
  6.           mkdir /path/to/yii/kickass/themes  
  7.           mkdir /path/to/yii/kickass/themes/classic  
  8.           mkdir /path/to/yii/kickass/themes/classic/views  
  9.           mkdir /path/to/yii/kickass/themes/classic/views/site  
  10.           mkdir /path/to/yii/kickass/themes/classic/views/layouts  
  11.    generate themes/classic/views/.htaccess  
  12.           mkdir /path/to/yii/kickass/themes/classic/views/system  
  13.           mkdir /path/to/yii/kickass/protected  
  14.           mkdir /path/to/yii/kickass/protected/models  
  15.    generate protected/models/ContactForm.php  
  16.    generate protected/models/LoginForm.php  
  17.           mkdir /path/to/yii/kickass/protected/extensions  
  18.   
  19. <省略>  
  20.   
  21.    generate css/bg.gif  
  22.    generate css/form.css  
  23.    generate css/screen.css  
  24.    generate css/main.css  
  25.    generate css/ie.css  
  26.   
  27. Your application has been created successfully under /path/to/yii/kickass.  
こんな感じであっという間にWebアプリのベースが作られる。楽だなぁ。

今回はWebアプリ名を『kickass』にしたけど、別にアメコミのKICKASSが好きってわけじゃない。『KickAss』には『超イカす』とか『マジ最高!』って意味があるので、それでつけてみた。


画像検索してたら見たくなってきたので近々DVD借りてきて見るかもね。


閑話休題。

さて、ブラウザで見てみよう。俺の仮想環境であるVMでは、yii.torhamzedd.localでブラウズできる仕組みになってるんで、yii.torhamzedd.local/kickassを見れば良いわけだ。


このページはどこをいじれば編集できるのか、といえば、ズバリ、『/path/to/yii/kickass/protected/views/site/index.php』だ。
ちょっといじってみよう。

予め『/path/to/yii/kickass/protectet/config/main.php』を編集して、『name』を『My Web Application』から『KICKASS』に変えておこう。

protected/config/main.php

  1. return array(  
  2.  'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',  
  3.  'name'=>'KICKASS',  

protected/views/site/index.php

  1. <?php  
  2. /* @var $this SiteController */  
  3.   
  4. $this->pageTitle=Yii::app()->name;  
  5. ?>  
  6.   
  7. <h1>良く来た!<i><?php echo CHtml::encode(Yii::app()->name); ?></i></h1>  
  8.   
  9. <p>貴様のWebアプリは作られた!おめでたい奴め!!</p>  
  10.   
  11. <p>このページをいじったりしたいんだったら、以下の2つのファイルをいじれば良いわけだ。</p>  
  12. <ul>  
  13.  <li>View file:  
  14.         <code>/path/to/yii/kickass/protected/views/site/index.php</code></li>  
  15.  <li>Layout file:  
  16.         <code>/path/to/yii/kickass/protected/views/layouts/main.php</code></li>  
  17. </ul>  
  18.   
  19. <p><a href="http://www.yiiframework.com/doc/">このドキュメント</a>  
  20. を読めば、更に色々といじったり壊したりやりたい放題できるかもしれないね。  
  21. それからもし作ってて疑問が出るようであれば、  
  22. 気軽に<a href="http://www.yiiframework.com/forum/">フォーラム</a>  
  23. に質問してみるのもいいかもしれない。</p>  

更新したら早速ブラウザでチェックだ。

うむ、良い感じである。

ではこのファイルは無視して、フォーム用に1つファイルを作ってみよう。場所はindex.phpと同じ場所で、ファイル名はinput.phpでいいだろう。


中身は一旦こんな感じにしておく。


さて、ビューファイルはできたけど、一体どこからこのビューファイルを呼び出すのだろうか。
答えはコントローラだ。

というわけで、siteコントローラを見てみようじゃないか。siteというのは、index.phpが入っているフォルダ名がsiteになってるんだけど、逆を言えばsiteコントローラがsite内を読み込む、と覚えればいいだろう。

フレームワークとはこういった決まり事があるから、ルールさえ覚えてしまえば作業が速いんだ。

では早速、/path/to/yii/kickass/protected/controllers/SiteController.phpを見てみよう。


actionIndexと、actionErrorというメソッドがある。先ほど書き換えたindex.phpは、actionIndexがメソッドになってる。つまりactionを取って判別すればいいわけだ。

FooコントローラのactionBarであれば、ビューファイルはfoo/bar.phpになる。簡単だね。

では今しがた作ったinput.phpを動かすためには、actionInputメソッドがあればいいわけだ。
actioErrorの下に、以下の様なメソッドを書こう。


これで、siteコントローラのinputアクションが起こされたら、site/input.phpが表示されることになった。表示させてるのはrenderメソッドだ。

早速ブラウザでみて見よう。URLはリクエストパラメータ方式で、『yii.torhamzedd.local/kickass/index.php?r=site/input』となる。


ちゃんと西暦が表示された。

フォームをつくろう

次はこのinput.phpを編集し、文字列を入力できるようにしてみる。

protected/views/site/input.php
  1. <form action="<?php echo Yii::app()->getBaseUrl();?>/index.php?r=site/input" method="post">  
  2.   
  3. <input type="text" name="postedData" />  
  4. <input type="submit" value="KICK" />  
  5.   
  6. </form>  
  7.   
  8. <?php if(isset($postedData)): ?>  
  9.     <h1><?php echo $postedData?></h1>  
  10. <?php endif?>  

ビューファイルが終わったらコントローラだ。

protected/controllers/SiteController.php
  1. public function actionInput()  
  2.     {  
  3.         $postedData = null;  
  4.         if(isset($_POST['postedData']))  
  5.         {  
  6.             $postedData = $_POST['postedData'];  
  7.         }  
  8.         $this->render('input'array(  
  9.             'postedData' => $postedData  
  10.         ));  
  11.     }  

この状態でブラウザ上から何かポストしてみると、大きな文字でポストした文字が表示されるはずだ。


続きは次回!!