前記事(FuelPHP開発入門_05)では誤情報を掲載してしまい申し訳ありませんでした。
ついでに、<s></s>で打ち消し線を書いていたつもりがQiita側に反映されておらず…。
KobitoとQiitaで表示が違うことに気が付かないまま日をまたぐ失態(´@ω@`;)
前回はController_Templateを使った実装を行いましたので、
今回はForm作成→からのpost取得をやります。
フォームヘルパー
CakePHP同様、FuelPHPにもフォームヘルパーが用意されています。
PHPのソースをHTMLのために切ること無く、且つ
<?php
echo '<input type="text" name="hoge" />';
?>
なんていうソースを書かないで済む(※コーダー的美意識)便利なものです。
ビューファイルに直接記述します。HTMLに慣れていればそんなに抵抗なく読めるのではないかと
書き方は以下。
<?php
/*
* フォームを開始します。actionはコントローラー/アクションの形で記述します。
* (この場合はController_Hogeクラスのaction_hogeメソッド)
*/
echo Form::open(array('action'=>'hoge/hoge' ,'method'=>'post'));
/*
* <input type="text" name="hoge" class="default" />
* 基本的には第一引数がname、第二引数がvalue、第三引数がclassなど
*/
echo Form::input('hoge','',array('class'=>'default'));
/*
* labelは引数の意味が違うので注意
* 第一引数が表示名、第二引数が関連付けするフィールドのID
*/
echo Form::label('説明','txtArea',array('class'=>'default-label'));
echo Form::textarea('description','',array('id'=>'txtArea','rows'=>6));
echo Form::checkbox('accept',false,array('id'=>'checkboxRequired'))
// submit
echo Form::input('send','送信',array('class'=>'btn','type'=>'submit'));
//hidden
echo Form::hidden('hid','secret',array());
?>
など。
ちなみにhiddenはForm::open()に記述することも可能で、
<?php
echo Form::open(
array('action'=>'hoge/hoge' ,
'method'=>'post' ,
'class'=>'default'),
array('hid'=>'secret'))
?>
open()の第四引数がhiddenのフィールドになっています。
これはSimpleAuthなどを利用するときの頻出となります。
フォーム部品について、詳しくはFuelPHPの公式リファレンスを参照してください。
リンクはバージョン1.7です。
このpostを受け取るPHPの記述は以下
public function action_hoge()
{
$post = Input::post();
if(!empty($post)){
// $post=array('hoge'=>'入力値','description'=>'入力値'...
$hoge=$post['hoge'];
}
$this->template->title="画面タイトル";
$this->template->content = View::forge('hoge/hoge');
}
Input::post()に連想配列でデータが入っています。
ファイルがどうなっているのかはまだ確認取れていないので、後に。
次はこのデータをデータベースに登録しようと思います(´@ω@`)
説明の順番がわからなくなってきました…難しい。