sample

動作サンプル

まず動かしてそれから覚える。これがDOLEM流の覚え方です。
ということでここでは様々な形のサンプルを用意していきます。
簡単なものから難しいものまで色々と用意していくつもりですので自分のLvにあったものや、やりたいものに即したものを適当に試していってみて下さい。
サンプル毎に「ここだけは覚えて帰ってもらいたい」ポイント解説もつけています。
参考までに大まかなLvもつけておきました。

Lv3.フォームを使ったGetデータのやり取り

GostClassの基本的な動きを理解するためのものです。
入力フォームを使ったGetデータのサンプルです。
用意するファイルは2つです。

区分:model

dolem/core/model/user/sample/get.php
  1. <?php if(!defined('IS_INITIAL_INCLUDE')) exit('Directory access is forbidden.');
  2. //******************************************************************************80
  3. // <<FileName>>
  4. //        get.php
  5. //
  6. // <<Summary>>
  7. //        
  8. //
  9. // <<Details>>
  10. //        
  11. //
  12. // <<RevisionHistory>>
  13. //         [Date]            [Author]        [V/R]        [Subject]
  14. //        2012/12/25        xirasaya        1.00        create new
  15. //****************************************************************************** 
  16. @loglog(basename(__FILE__));
  17. ############################################################60
  18. ## execute...
  19. ############################################################
  20. #
  21. $template = new template();
  22. #
  23. ############################################################60
  24. class template extends BaseModel {
  25.     
  26.     function init() {
  27.         return true;
  28.     }// end function
  29.     function main() {
  30.         //========================================40
  31.         // prepare
  32.         //========================================
  33.         $GetClass = GetClass::newInstance();
  34.         
  35.         //----------------------------------------40
  36.         // main
  37.         //----------------------------------------
  38.         $this->set('res', $GetClass->get('txt_1'));
  39.         
  40.         return true;
  41.     }// end function
  42.     function disp() {
  43.         
  44.         $layout = VIEW_DIR_PATH. '/'.general('c').'/sample/get.php';
  45.         include($layout);
  46.         return true;
  47.     }// end function
  48. }// end class
  49. ?>

区分:view

dolem/core/view/user/sample/get.php
  1. <?php if(!defined('IS_INITIAL_INCLUDE')) exit('Directory access is forbidden.');
  2. //******************************************************************************80
  3. // <<FileName>>
  4. //        get.php
  5. //
  6. // <<Summary>>
  7. //        
  8. //
  9. // <<Details>>
  10. //        
  11. //
  12. // <<RevisionHistory>>
  13. //         [Date]            [Author]        [V/R]        [Subject]
  14. //        2012/12/25        xirasaya        1.00        create new
  15. //******************************************************************************
  16. ?>
  17. <html>
  18. <body>
  19.     <div>入力フォーム</div>
  20.     <form action="<?=HTTP_BASE_URL?>/" method="get">
  21.         <input type="hidden" name="m" value="sample/get" />
  22.         <input type="text" name="txt_1" value="" maxlength="10" /><br />
  23.         <input type="submit" name="btn_submit" value="submit" /><br />
  24.     </form>
  25.     
  26.     <div>結果</div>
  27.     <div><?=$this->get_h('res')?></div>
  28. </body>
  29. </html>

アクセスURLは、
http://{{ホスト名}}/?m=sample/get
となります。

動作検証


解説

まずはmodelファイルの方から。
図1を見て下さい。

図1

以前Postデータを扱ったときはPostClass::newInstance()を利用しましたが、今回扱うのはGetデータなのでGetClass::newInstance()になっています。
オブジェクトの入れ物も$PostClassだったものが$GetClassになっていることに注意。

使い方は$PostClassと同じ使い方なので特にごちゃごちゃ言う必要もないかな。
あとdisp()内のファイルパスも変更しているのでこれは毎回のことだけど忘れないようにして下さい。

modelファイルについては以上で終わり。


次にviewファイル。
図2と図3を見比べてみてください。

図2:Postデータの時


図3:Getデータの時

Postデータを扱うときと差異がある部分にわかりやすく赤で下線を引いてみました。

見比べてみてもらえばわかるようにまずformタグのaction属性の値が違うことに気が付くでしょうか。
もう既にお分かりかもしれませんがDOLEMではURLの後ろに?m={modelファイルのパス}を付与することで任意のページを呼び出しています。
しかしmethod属性が'get'の時はaction属性にクエリストリングをつけることはできません。これはHTMLの仕様ですね。
なので同じ動作をするようにhiddenで隠し要素を埋め込んでいます。
valueの値が'sample/get'になっているということはaction属性に{URL}/?m=sample/getと指定しているのと同じことになります。

まとめ

  • Getデータを扱うときはGetClass::newInstance()を利用する。
  • GetClass::newInstance()もPostClass::newInstance()も使い方は同じ。
  • formタグのmethod属性が'get'のときは、'post'のときと書き方が若干違う点がある。


[top]