Fuelphp-form-programming
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 を要求し、次のスクリーンショットに示すように従業員データを入力して、フォームを送信します。
次に、それは次のようにデータベースで利用可能なすべての従業員(新しく追加されたものを含む)を示しています-