(゚д゚)ノ ども、中の人です。


今回はCodeigniterの最後、ヘルパーについて説明していくことにしますYO。


ヘルパーって何だ!.hackのあの人かっ!? いや、あれはヘルバでry


PHP2009-helba
こうですかわかりません(ぉ


オタなネタはほっといて、ヘルパーの説明に入りましょう。


介護ヘルパー?的なものでしゃうか?(ぇ


ヘルパーの機能は今までリダイレクト機能部分に使ってきたアレです。


ちゃんと説明すると、コントローラーやビューで使用される、入力を支援するための拡張機能のことです。


面倒なソースコードを簡単な関数で呼び出し、ミスを減らして記述も少なくする優れモノ。


             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____     こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( >). (<)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /



ヘルパーは関数の集合体としてつくられているので、ヘルパーを読み込むことでその関数群が使える様になります。


         / ̄\
        |     |
         \_/
          |
       /  ̄  ̄ \
     /  \ /  \
    /   ⌒   ⌒   \      よくぞこのヘルパーを呼んでくれた
    |    (__人__)     |      褒美として関数群を使う権利をやる
    \    ` ⌒´    /   ☆
    /ヽ、--ー、__,-‐´ \─/
   / >   ヽ▼●▼<\  ||ー、.
  / ヽ、   \ i |。| |/  ヽ (ニ、`ヽ.
 .l   ヽ     l |。| | r-、y `ニ  ノ \
 l     |    |ー─ |  ̄ l   `~ヽ_ノ____
    / ̄ ̄ ̄ ̄ヽ-'ヽ--'  / 関数   /|
   .| ̄ ̄ ̄ ̄ ̄ ̄|/|    | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄関数 /|  ̄|__」/_関数     /| ̄|__,」___    /|
| ̄ ̄ ̄ ̄ ̄|/関数   ̄/ ̄ ̄ ̄ ̄|/ 関数   /|  / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/| /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|


ヘルパー使用時には、ビュー、またはコントローラーで


$this->load->helper('ヘルパー');


の一行を加えてヘルパーを呼びましょう。


     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |
     |┃  ノ//   ./ ̄ ̄ ̄ \
     |┃三    /  ::\:::/:::: \
     |┃     /  <●>::::::<●>  \
     |┃     |    (__人__)     | <呼んだ?
     |┃三   \    ` ⌒´    /
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \



これにより引数に指定したヘルパーが読み込まれ、その機能が使用できるようになります。


複数のヘルパーを読み出すには


$this->load->helper('ヘルパー','ヘルパー','ヘルパー','ヘルパー');


                      ''';;';';;'';;;,.,                  ザッ
                       ''';;';'';';''';;'';;;,.,   ザッ
          ザッ            ;;''';;';'';';';;;'';;'';;;
                        ;;'';';';;'';;';'';';';;;'';;'';;;
                        vymyvwymyvymyvy     ザッ
               ザッ     MVvvMvyvMVvvMvyvMVvv、
                   Λ_ヘ^-^Λ_ヘ^-^Λ_ヘ^Λ_ヘ
     ザッ            ヘ__Λ ヘ__Λ ヘ__Λ ヘ__Λ
                __,/ヽ_ /ヽ__,.ヘ /ヽ__,.ヘ _,.ヘ ,.ヘ    ザッ
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''ヘルパ'''''':::::\/'''ヘルパ'''/''''''ヘルパ'''':::::\   /''''''ヘルパ''':::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::|
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´


このように使用したいヘルパー名を配列にまとめたものを引数に指定してやります。


すでに上で述べましたが皆さんはURLヘルパーを使用しています。


当然ヘルパーにはURLヘルパーのほかにも多数のヘルパーが存在します。


それではもっとも多用されるFormヘルパーから見ていきましょう。


Formヘルパーは、文字通りフォームを作成するためのヘルパーです。


pearにも似たような機能があったと思いますが割愛(ぇ


Formヘルパーにはフォーム関係のタグを自動生成するための関数が用意されています。

これらの関数を呼び出してフォームを生成してみませう。


『veiws』のadd.phpを編集。


<h1>Blog新規作成</h1>
<p>新しい記事を記述してください。</p>
<?=$this->load->library('validation') ?>
<?=$this->validation->error_string ?>
<form method="POST" action="/igniterapp/helo/add">
<table>
<tr>
<th>タイトル</th>
<td><input type="text" name="title" size="60" value="<?=$this->validation->title ?>"></td>
</tr>
<tr>
<th>コンテンツ</th>
<td><textarea name="content" cols="40" rows="3"><?=$this->validation->content ?></textarea></td>
</tr>
<tr>
<th></th>
<td><input type="submit"></td>
</tr>
</table>
</form>


↑を↓のように編集。


<h1>Blog新規作成</h1>
<p>新しい記事を記述してください。</p>
<?=$this->load->helper('form') ?>
<?=form_open(base_url().'helo/add') ?><br/>
TITLE<br/>
<?=form_input(array('name'=>'title','size'=>60)) ?><br/>
CONTENT<br/>
<?=form_textarea(array('name'=>"content",'cols'=>40,'rows'=>3)) ?><br/>
<?=form_submit('submit','送信') ?>
<?=form_close() ?>


解説。
まずヘルパー機能を使う為にはじめに<?=$this->load->helper('ヘルパー名')?>としています。ここで使用するのはフォームヘルパーなのでformと入力。


ヘルパー名入力の際に''を入れるのを忘れずに。


こうしてフォームヘルパーの呼び出しを完了させたら実際にフォーム生成部分の記述。


<?=form_open(base_url().'helo/add') ?>部分は

<form method="post" action="http://localhost.igniterapp/helo/add ">というタグの生成。base_urlはconfigで設定したアレです。

CodeigniterではGET形式は危ない!という理念なのでデータ送信形式は基本POSTで行うということを前にも述べましたが、今回自動生成されるフォームの送信形式も当然POSTで行われます。


次にタイトル部分のフォーム。

<?=form_input(array('name'=>'title','size'=>60)) ?>

<input type="text" name="title" size="60">のテキスト入力フォームを生成します。


次にコンテンツ部分のフォーム。
<?=form_textarea(array('name'=>"content",'cols'=>40,'rows'=>3)) ?>

<textarea name="content" cols="40" rows="3"></textarea>のテキストエリアフォームを生成します。


次に送信ボタン。
<?=form_submit('submit','送信') ?>

<input type="submit" value="送信">を生成。

最後に<?=form_close() ?>

これは</form>、フォームの閉じタグを生成します。()を忘れずに。



PHP2009-46
見た目は変わらず。右クリックでソースの表示させてもおんなじ。



ちなみにこのままではデフォルトのフォームのままなので、バリデーション対応用に書き換えましょう。


バリデーション対応ver

<h1>Blog新規作成</h1>
<p>新しい記事を記述してください。</p>
<?=$this->validation->error_string ?>
<?=$this->load->helper('form') ?>
<?=form_open(base_url().'helo/add') ?><br/>
TITLE<br/>
<?=form_input(array('name'=>'title','size'=>60,'value'=>$this->validation->title)) ?><br/>
CONTENT<br/>
<?=form_textarea(array('name'=>"content",'cols'=>40,'rows'=>3,'value'=>$this->validation->content)) ?><br/>
<?=form_submit('submit','送信') ?>
<?=form_close() ?>



PHP2009-49


このようにvalueにバリデーションから前回入力された値をそのまま挿入することができます。


では最後にFormヘルパーの主なメソッドを紹介します。


*フォームの開始
form_open(送信先)
<form>タグを生成。引数に送信先をモジュール/メソッドとして入力。


*フォームの終了
form_close(追加テキスト)
</form>タグを生成します。引数に追加するテキストを挿入できます。
例えばフォームタグと一緒に閉じタグを挿入したい場合にform_close('</table>')とすることで
ドームが配置されているタグの閉じタグまでまとめて書き出せます。


*テキスト入力用タグ
form_input(名前、値)
form_input(属性の配列)

<input type="text">による入力フィールドを生成するものです。第一引数に名前、第二はそのままvalueの値を指定します。
あるいは配列で属性を指定できます。


*パスワード入力用タグ
form_password(名前、値)
form_password(属性の配列)

<input type="password">タグによるパスワード入力用フィールドを生成します。引数はform_inputと同じです。


*非表示フィールド用タグ
form_hidden(名前、値)
form_hidden(属性の配列)

<input type="hidden">タグによる非表示フィールドを生成します。引数はform_inputと同じです。


*テキストエリア
form_textarea(名前、値)
form_textarea(属性の配列)

<textarea>タグによる入力エリアを生成します。引数はform_inputと同じです。一般に、rowsとcolsの値は最低限用意しておきます。


*チェックボックス
form_checkbox(名前、値)
form_checkbox(属性の配列)

<input type="checkbox">によるチェックボックスを生成します。第一引数、第二引数はform_inputと同じですが、第三引数にデフォルトのチェック状態を
示す真偽値を指定できます。あるいは属性を配列にして渡す事も可能です。


*ラジオボタン
form_radio(名前、値、真偽値)
form_radio(属性の配列)

<input type="radio">によるラジオボタンを生成します。それぞれの引数は、form_checkboxと同じです。


*送信ボタン
form_submit(名前、値)
form_submit(属性の配列)

送信ボタンを生成します。これもform_inputと引数の指定等は一緒です。


*プッシュボタン
form_button(名前、値)
form_button(属性の配列)

プッシュボタンを生成します。名前と値を指定した場合には、<input type="bubmit">で
実行される送信ボタンが生成されます。また、form_buttonで属性の配列を指定した場合には、<input type="button">が生成されます。
この後第三引数にJavaScriptの設定を用意することもできます。


*ドロップダウンリスト
form_dropdown(名前、項目、選択する項目)
form_dropdown(属性の配列)

<select>タグによるドロップダウンリスト(ポップアップメニュー)を生成します。
第一引数には名前、第二引数には表示する項目名のテキストを配列として渡します。
第三引数には、デフォルトで選択されている項目名を指定します。


*ラベル
form_label(表示テキスト、ラベル付けする項目)
form_label(表示テキスト、ラベル付けする項目、属性の配列)

<label>タグによるラベルを生成するものです。第一引数にラベルとして表示するテキスト、第二引数に<label>タグのfor属性で指定する項目名をそれぞれ
記入します。第三引数に属性を配列で渡すことも可能です。)

以上でFormヘルパーの主なメソッドの紹介を終わります。


最後に。
Codeigniterは現存するフレームワークの中でもシンプルさに秀でています。
一つ一つのライブラリやヘルパーは、それを使う為に他のライブラリの機能や構造を理解していなければならない…ということがありません。

なので、最低限の使い方を覚えた後に、ヘルパーやライブラリを一部ずつ使えるようにしていけば何も問題ありません。
Codeigniterは短期間で最低限の学習だけで一通り使えるように設計されていますので、取得するのにもかなり短期間で済むと思います。

ただ、現状ではCodeigniterに関する解説は日本語でのドキュメントが少ないのでCodeigniterにあるドキュメント中心で勉強していくことになるかもしれません。

当然、他の詳解している日本のサイトを見つけて、それを参考にしながら勉強する、という手もあります。


それでは、長くなりましたがこれにてフレームワーク『Codeigniter』編を終了とさせていただきます。



   (  ~~.旦
       .~旦 )
     (( 旦~  グラグラ
       .旦
       ..旦~
       (旦~~
      /⌒ヽ   みなさん ごくろうさまです
     / ´_ゝ`)
     |    /    お茶がはいりましたよ
     | /| |
     // | |
    U  .U   ⊿

                    ダシャーン

                      \
           ⊂\    _,,,,,,,,__         /
             \\_/    .,’'.,’:.',,      .,’:.',, .,’: l  .,’:.',,|[]].,’:...,
         ガッ    _]         ).,’:.',,:.',,  []] .,’:.',,.,’:.',,.,日  .,’:.',,.,’:.',,          /
         ⊿⊂ニニ_______________,,..ノ  /[]].,’:',,:',[]]/[]]\[]].,’:.',,|[]].,’:.',, _ .,’:.',,]]/ 日.,’:.',,.., . ..,,,;:[]]

|||orz



(´ω`;)Codeigniterは再勉強or上達を目指すことになったらいつか続編として取り上げるかもしれません…いつか。


   /⌒ヽ
  / ´_ゝ`)次回は8割方smartyやりますよ・・・
  |    / 残り2割はcakePHPの可能性。
  | /| |
  // | |
 U  .U


(゚ω゚)ノシ TO BE CONTINUED!!

人気ブログランキングへ