Fuelphp-form-programming

提供:Dev Guides
移動先:案内検索

FuelPHP-フォームプログラミング

FuelPHPは、フォームプログラミングを実行するために、 Form Fieldset および Input の3つのクラスを提供します。

  • Form クラスには、すべてのHTMLフォーム要素を作成するオプションがあります。
  • Fieldset クラスは、モデルと検証を統合し、より高いレベルのメソッドを介してhtml要素を作成するオプションを提供します。
  • *入力*クラスには、httpパラメーター、サーバー変数、ユーザーエージェントだけでなく、htmlフォームを介して送信されたデータを解析するオプションがあります。

この章では、FuelPHPの*フォームプログラミング*を学びましょう。

Form

前述のように、Formクラスはhtmlフォーム要素を作成するメソッドを提供し、重要なメソッドは次のとおりです-

開いた()

  • open()*は、新しいフォームを作成するために使用されます。 それは、次の2つのパラメータを提供します-
  • $ attributes -配列としてのフォームタグの属性、または文字列としてのアクションURLのみ。
  • $ hidden -隠しフィールド名とその値の配列。
echo Form::open('/employee/add');
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));

閉じる()

  • close()*は単にフォームを閉じます。
echo Form::close();

入力()

  • input()*はhtml入力要素を作成します。 次の3つのパラメーターがあります。
  • $ field -入力要素の名前
  • $ value -入力要素の値
  • $ attributes -配列としての入力要素の属性
echo Form::input('name', 'jon', array('style' => 'border: 20px;'));

ラベル要素

*label* はhtmlラベル要素を作成します。 次の3つのパラメーターがあります。
  • $ label -表示するラベル
  • $ id -関連するフォーム要素ID
  • $ attributes -配列としてのラベル要素の属性
echo Form::label('Employee Name', 'employee_name');

隠された

*hidden* は入力メソッドに似ていますが、入力要素のタイプを非表示に設定する点が異なります。

パスワード

*password* はinputメソッドに似ていますが、input要素のタイプをpasswordに設定する点が異なります。

無線

*radio* はinputメソッドに似ていますが、input要素のタイプをradioに設定する点が異なります。 次の4つのパラメーターがあります。
  • $ field -入力要素の名前
  • $ value -入力要素の値
  • $ checked -アイテムがチェックされているかどうか(true/false)
  • $ attributes -配列としての入力要素の属性
echo Form::label('Male', 'gender');
echo Form::radio('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::radio('gender', 'Female');

チェックボックス

*checkbox* はinputメソッドに似ていますが、input要素のタイプをチェックボックスに設定する点が異なります。 次の4つのパラメーターがあります。
  • $ field -入力要素の名前
  • $ value -入力要素の値
  • $ checked -アイテムがチェックされているかどうか(true/false)
  • $ attributes -配列としての入力要素の属性
echo Form::label('Male', 'gender');
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::checkbox('gender', 'Female');

file

*file* は入力メソッドに似ていますが、入力要素のタイプをfileに設定する点が異なります。

テキストエリア

*textarea* は、html textarea要素を作成します。 次の3つのパラメーターがあります。
  • $ field -textarea要素の名前
  • $ value -textarea要素の値
  • $ attributes -配列としてのtextarea要素の属性
echo Form::textarea ('description', 'original data (value)', array ('rows' => 6,
      'cols' => 8));

選択する

*select* はHTMLのselect要素を作成します。 それは次の4つのパラメータを持っています-
  • $ field -選択要素の名前
  • $ values -初期選択値
  • $ options -配列としてのオプション。 ネストされた配列を使用してオプションをグループ化できます
  • $ attributes -配列としての入力要素の属性
echo Form::select (
   'country',
   'none',
   array (
      'none'  => 'None',
      'asia'  => array (
         'in' > 'India',
         'cn' => 'China'
      ),

      'us' => 'United States'
   )
);

提出する

*submit* は入力メソッドに似ていますが、送信する入力要素のタイプを設定する点が異なります。

ボタン

*button* はhtmlボタン要素を作成します。 次の3つのパラメーターがあります。
  • $ field -ボタン要素の名前
  • $ value -ボタン要素の値
  • $ attributes -配列としてのボタン要素の属性
echo Form::button('emp_submit', 'Submit');

リセット

*reset* はinputメソッドに似ていますが、リセットする入力要素のタイプを設定する点が異なります。

fieldset_open

fieldset_openは、htmlフィールドセットと凡例要素を作成します。 それは次の2つのパラメータを持っています-

  • 属性-配列としてのフィールドセット要素の属性
  • legend -作成する凡例の名前
//returns <fieldset class = "example-class" id = "example-id">
<legend>
   Custom Legend
</legend>

echo Form::fieldset_open (array (
   'class'  => 'example-class',
   'id'     => 'exampleid',
   'legend' => 'Custom Legend'
));

fieldset_close

fieldset_closeは、HTMLフィールドセット終了タグを作成します。

//returns </fieldset>
echo Form::fieldset_close();

入力クラス

入力クラスは、フォームの詳細とともにすべての要求データを読み取るメソッドを提供します。 重要な方法のいくつかは次のとおりです-

uri

*uri* は、リクエストの現在のURIを返します
//request: http://localhost:8080/employee/welcome
echo Input::uri();//return/employee/welcome

方法

*method* は、リクエストで使用されるHTTPメソッドを返します
echo Input::method()//"POST"

get

*get* は、$ _ GET変数の読み取りを可能にします。 次の2つのパラメーターがあります。
  • $ index -$ _GET配列のインデックス
  • $ default -インデックスが見つからない場合のデフォルト値。
echo Input::get('age', '20');//returns $_GET['age']

post

*post* は、$ _ POST変数の読み取りを可能にします。 次の2つのパラメーターがあります。
  • $ index -$ _POST配列のインデックス
  • $ default -インデックスが見つからない場合のデフォルト値
echo Input::get('age', '20');//returns $_POST['age']

param

*param* を使用すると、$ _ GET、$ _ POST、$ _ PUT、または$ _DELETE変数からアイテムを取得できます。 次の2つのパラメーターがあります。
  • $ index -配列のインデックス
  • $ default -インデックスが見つからない場合のデフォルト値

パラメータが指定されていない場合、すべてのアイテムが返されます。

echo Input::param('age', '20');//returns $_POST['age']

file

*file* を使用すると、$ _ FILE変数を読み取ることができます。 次の2つのパラメーターがあります。
  • $ index -$ _POST配列のインデックス
  • $ default -インデックスが見つからない場合のデフォルト値
echo Input::file();

is_ajax

リクエストがAJAXを介して行われた場合、_is_ajax_はtrueを返します。

echo Input::is_ajax()//return false

プロトコル

*protocol* は、リクエストで使用されるHTTPプロトコルを返します。
echo Input::protocol()//returns "HTTP"

ip

*ip* は、リクエストが行われたIPアドレスを返します。
echo Input::ip()//returns "84.45.34.24" (Public IP Address)

real_ip

*real_ip* は、要求が行われる実際のIPアドレス(クライアントがプロキシの背後にある場合)を返そうとします。
echo Input::real_ip()//returns "10.76.12.1" (local private IP Address)

サーバ

*server* を使用すると、$ _ SERVER変数を読み取ることができます。 次の2つのパラメーターがあります。
  • $ index -$ _POST配列のインデックス
  • $ default -インデックスが見つからない場合のデフォルト値。
echo Input::server('HTTP_HOST');//returns localhost:8080

リファラー

*referrer* は、$ _ SERVER変数からリファラーを返します。 これは、現在のリクエストのhttpリファラーを取得するためのショートカットメソッドです。

ユーザーエージェント

*user_agent* は、$ _ SERVER変数からユーザーエージェントを返します。 これは、現在のリクエストのhttpユーザーエージェントを取得するためのショートカットメソッドです。

クエリ文字列

*query_string* は、$ _ SERVER変数からクエリ文字列を返します。 現在のリクエストのクエリ文字列を取得するためのショートカットメソッドです。

ヘッダー

*headers* は、特定のヘッダーまたはすべてのヘッダーを返します。 それは次の2つのパラメータを持っています-
  • $ index -HTTPヘッダーの名前
  • $ default -インデックスが見つからない場合のデフォルト値。
echo Input::headers('Content-Type');//returns "text/html"

拡張

*extension* は、現在のリクエストのURI拡張を返します。
//Example URL: http://localhost/test/
echo Input::extension(); //NULL

//Example URL: http://localhost/testl
echo Input::extension(); //'html'

実施例

フォームと入力クラスを使用して新しい従業員を追加する簡単なフォームを作成しましょう。

フォームを作成

次のように、従業員コントローラーで新しいアクション get_add を作成します。

public function get_add() {
   return Response::forge(View::forge('employee/add'));
}

次に、アクションのビュー、fuel/app/views/employee/add.phpを次のように追加します。

<!DOCTYPE html>
<html lang = "en">
   <head>
      <title>Employee :: add page</title>
      <meta charset = "utf-8">
      <meta name = "viewport" content = "width = device-width, initial-scale = 1">
      <?php echo Asset::css('bootstrap.css'); ?>
   </head>

   <body>
      <div class = "container">
         <?php
            echo Form::open(array('action' => 'employee/add', 'method' => 'post'));
         ?>

         <div class = "form-group">
            <?php
               echo Form::label('Employee name:', 'name');
               echo Form::input('name', '', array('class' => 'form-control'));
            ?>
         </div>

         <div class = "form-group">
            <?php
               echo Form::label('Employee age:', 'age');
               echo Form::input('age', '', array('class' => 'form-control'));
            ?>
         </div>

         <?php echo Form::button('frmbutton', 'Submit', array(
            'class' => 'btn btn-default'));
         ?>

         <?php
            echo Form::close();
         ?>
      </div>
   </body>

</html>

ここでは、 bootstrap を使用してフォームを設計しました。 FuelPHPは、ブートストラップコンポーネントを完全にサポートしています。 ページをリクエストすると、http://localhost:8080/employee/addに次のフォームが表示されます。

フォームデザイン

プロセスフォーム

新しいアクション_post_add_を作成してフォームを処理し、次のようにユーザーが入力した従業員データを従業員コントローラーのデータベースに追加します。

public function post_add() {
   $name = Input::post('name');
   $age = Input::post('age');
   $model = new model_employee();
   $model->name = $name;
   $model->age = $age;
   $model->save();
   Response::redirect('employee/list');
}

ここでは、ユーザーが入力したデータがデータベースに保存されると、従業員リストページにリダイレクトされます。 次に、従業員リストページを作成します。

従業員のリスト

次のように、データベース内の従業員をリストする新しいアクションaction_listを作成します。

public function action_list() {
   $data = array();
   $data['emps'] = model_employee::find('all');
   return Response::forge(view::forge('employee/list', $data));
}

次のように、上記のアクションの新しいビュー fuel/app/views/employee/list を作成します。

<ul>
   <?php
      foreach($emps as $emp) {
   ?>
   <li><?php echo $emp['name']; ?></li>
   <?php
   }
   ?>
</ul>

フォームを確認する

ここで、URL http://localhost:8080/employee/add を要求し、次のスクリーンショットに示すように従業員データを入力して、フォームを送信します。

従業員データ

次に、それは次のようにデータベースで利用可能なすべての従業員(新しく追加されたものを含む)を示しています-

データベース