12
12

More than 5 years have passed since last update.

FuelPHP開発入門_06

Last updated at Posted at 2014-04-15

前記事(FuelPHP開発入門_05)では誤情報を掲載してしまい申し訳ありませんでした。
ついでに、<s></s>で打ち消し線を書いていたつもりがQiita側に反映されておらず…。
KobitoとQiitaで表示が違うことに気が付かないまま日をまたぐ失態(´@ω@`;)

前回はController_Templateを使った実装を行いましたので、
今回はForm作成→からのpost取得をやります。

フォームヘルパー

CakePHP同様、FuelPHPにもフォームヘルパーが用意されています。
PHPのソースをHTMLのために切ること無く、且つ

<?php
    echo '<input type="text" name="hoge" />';
?>

なんていうソースを書かないで済む(※コーダー的美意識)便利なものです。
ビューファイルに直接記述します。HTMLに慣れていればそんなに抵抗なく読めるのではないかと
書き方は以下。

view/hoge/hoge.php
<?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の記述は以下

controller/hoge.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()に連想配列でデータが入っています。
ファイルがどうなっているのかはまだ確認取れていないので、後に。

次はこのデータをデータベースに登録しようと思います(´@ω@`)
説明の順番がわからなくなってきました…難しい。

12
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12