formといえば…、大昔まだブラウザがモザイクとか呼ばれていた頃の話、HTMLをエディタで手打ちしだした頃、pタグとかbとかiとかh1〜6等を一通り覚え、参考書で初めてform関連のタグ(とそのサンプル)を目にして、「おお、テキストフィールドだ!、サブミットボタンだ!チェックボックスやラジオボタンもあるぞ!これでGUIアプリが簡単に作れる!」とマジでおもって、その本片手に覚えたてのタグを一所懸命打ち、ブラウザで表示させて、いざsubmit!とかやった時の感動とそれに続く失望を思い出します(長っ)。
当時はCGIという言葉すら知らず、なにやらGUI部品を並べれば勝手にアプリケーションができあがるというアホな幻想を抱いていましたから、ボタンをクリックして何も起きない時の失望感は絶大でした(--;
で、アホな前置きはこれぐらいにして、CodeIgniterでは他の多くのフレームワークと同様form関連のヘルパーがあります。まあチュートリアルとかでも使ってましたが、なんか閉じタグ</form>だけはHTML直打ちってのが微妙にダサかったりしますが(^^;でもまあ直接タグ打つよりはいろいろな面で楽できそうですね。というわけで、Controllerのコンストラクションに…
$this->load->helper('form');
の一行を追加して
そしてViewの方に…
<?=form_open('gappei/index')?>
新市町村:<?=form_input('newcity', '新市町村')?>
<?=form_submit('search', '検索')?>
</form>
とりあえずこれで表示されます。
テキストフィールドが一つとサブミットボタンの一番シンプルな形でしょうか。form_inputの第2パラメータに'新市町村'と書いてありますが、ユーザガイドによるとここはvalue="****"の部分になるようで、とりあえず必須っぽいので暫定です。(注:実は書かなくても大丈夫みたいですが…)
そんで次にformからのデータを受取る部分をコントローラに追加します。
$data['newcity'] = $this->input->post('newcity');
CodeIgniterではformのgetメソッドは使用できないので、フォームヘルパーで作ったformは必ずpostになるようです。postで指定してる'newcity'はinputテキストフィールドの名前になります(HTML:name="newcity")。そして受取ったデータを$data配列にnewcityとして格納します。この$dataは
$this->load->view('gappei_view', $data);
によって一括してVIEWに渡されますので、VIEW側からは$newcityとすることで送信したpostデータを受取ることができます。なので上で暫定的に'新市町村'としていた部分は…
form_input('newcity', $newcity)
に変更すれば検索ボタンを押して送信した後にも直前に送信した検索語が反映されるようになります。
そしてpostで受取ったデータを元にSQLを組立てデータベースにクエリ発行〜データ取得〜表示という流れになるとおもいますが、それは次回ということで。
ラベル:codeigniter