FuelPHPサイド
FuelBeans 16 : フォーム入力の基礎
バリデーションは話が長くなりそうですので、その直前のフォーム入力の基礎までやってみましょう。
さて、気分も新たにFuelPHPを新たにインストールしてみましょう。
今まで、やってきたことは大したことありません。コードクリーンアップして続けてもいいんですが、どのディレクトリーが必要で、どれが不必要かとか、既存のコードからNetBeansのプロジェクトを作成するとか、慣れていない方は、先へ進む前、この時点で復習しておきましょう。
最初は何も見ず、今までの理解に基づいてチャレンジしましょう。何がわかっていて、何を理解していないのか、明確にしましょう。
インストール後、FuelPHPのプログラムを削除しましょう。WelcomeとHelloのページが表示されるプログラムです。何を削除すれば良いのか、覚えていますか?
ああ、NetBeansを新しくインストールする必要はありませんよ。間違えないでね。FuelPHPのみ新しくzip解凍して、プロジェクトとして取り込みます。
前回まで使っていたfuelphpプロジェクトは取っておきましょう。消してもかまいませんが、その前にroutingsetter.phpは新しいプロジェクトにコピーしておいてください。
慣れている方は新しくインストールするのは飛ばしましょうね。いつものように脳内変換でお願いします。この先は新しくインストールした前提で行います。
では、展開したFuelPHPをプロジェクトとして取り込みましょう。プロジェクト名はお任せします。ここでは仮にFormInputにしておきます。
とりあえずビューを作成し、フォームを表示するところまでやりましょう。
コントローラーはlogin.phpです。
<?php
class Controller_Login extends Controller
{
function action_index()
{
$view = View::forge('form/login');
$view->title = 'ログイン';
return $view;
}
}
ビューはlogin.phpという名前のファイルをviews下のformフォルダーの中に作成します。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php echo Form::open(Uri::current()); ?>
<?php
echo Form::label('ユーザー名 : ', 'username');
?>
<?php echo Form::input('username', Input::post('username') ? : '', array('size' => 30)); ?>
<?php
echo Form::label('パスワード : ', 'password');
?>
<?php echo Form::password('password', Input::post('password') ? : '', array('size' => 30)); ?>
<?php
echo Form::submit('login', 'ログイン');
?>
<?php echo Form::close(); ?>
</body>
</html>
実行する前にルーティングを設定しましょう。デフォルトでこのController_Loginクラスのaction_index関数が実行されるようにしましょう。
<?php
return array(
'_root_' => 'login/index', // The default route
);
実行ボタンをクリックしましょう。ログインフォームが表示されたでしょうか?実行ボタンをクリックしただけで、ログインフォームが表示されるように、設定してみましょう。良くありがちなのが、プロジェクトURLに/publicを付け忘れることです。
今回のコードの中で新しいのはビューの中、HTMLの生成にFormクラスを使用していることです。それに関連して、UriクラスとInputクラスを使って見ました。
現在、Uri以外まだ未翻訳ですが、紹介しておきます。
Formクラスは他のフレームワークとそう違いはありません。Formクラスは存在しますが、使用しなければならないものではありません。
open()でUriクラスのcurrent()を利用しています。current()は現在のURLをhttp://から、そのまま返してくれるものです。同じUriクラスにstring()があり、こちらはベースURL以降を返してくれます。どちらを使用しても、open()がhttp://からの絶対URLに変換します。
Inputクラスのpost()はPOSTで渡ってきた情報を受け取ります。GETでしたら、get()です。この2つを同時に取り込めるget_post()関数や、PUT、DELETEをも一色単に扱うall()も用意されています。
FuelPHPのクラスを用いて入力項目を生成するなら、Form::input('username', Input::post('username') ? : '');はほぼ決め打ちのコードです。post()で入力項目を指定します。この関数は、POSTに指定された入力項目があれば、その値を、無ければnullをデフォルトで返します。nullもfalse扱いですから、項目が存在しない場合、つまり初回表示時や入力項目が殻の場合は、三項演算子で''が値として表示されます。(つまり、入力項目は空で表示されます。)もし、初回に表示したい値がある場合は''の代わりにその値を指定すればいいわけです。)
入力項目があった場合、trueとして扱われます。三項演算子ではtureの値を指定していませんが、?の前の条件文部分の見参結果がそのまま、三項演算子全体としての評価となりますので、POSTされた値が表示されます。
この三項演算子のtrueパターンを省略するのが嫌いな方は、きちんと書いていただいても結構です。FuelPHPのコーディング規約には、この形式がやんわりと奨められています。
今入力した内容は、多分コピペされた方が多いでしょう。コピペで基本的な部分を使いまわすのは基本ですが、まっさらなところからバンバン入力して創り上げるのも、なかなか格好が良いので、チャレンジしてみましょう。
既にご紹介した、私のコードテンプレートをご利用の方、限定です。登録されていない方は、この内容を飛ばすか、まとめて登録するか、もしくは必要なものを選んで、一つ一つ登録してください。
これだけで、フォームが作成されました。ここまでのコーディングは、慣れればわずか3分です。.(タイプが速い方は、そのまま打ち込んでも、もっと早く打ち込めるぞという、突っ込みは無しです。)
続けましょう。コントローラーのaction_indexの最初の実行分の前に、空行を作ってください。もし、私のコードテンプレートを利用されている方は、postcheckと入力し、タブをクリックです。
登録されていない方は、以下の通り入力してください。
<?php
class Controller_Login extends Controller
{
function action_index()
{
if (Input::method() == 'POST')
{
}
$view = View::forge('form/login');
$view->title = 'ログイン';
return $view;
}
}
これがフォーム入力時の定形になります。
Input::method()でPOSTされたかどうかチェックしています。POSTされていた場合、if文のtrueの{ }中で、入力項目のバリデーションと必要な処理を行います。
このif文の前では、必要に応じてURLのチェックが入ることでしょう。ルーティングにより、指定されたURLの要素が、正しいのかをチェックします。正しくない場合は、404、必要に応じ500ページなどを表示することになるでしょう。URLが正しいかどうか、単純な比較で済む場合もあるでしょうし、正規表現によるチェックが必要かも知れません。DBに一致するレコードの存在チェックが必要かも知れません。
今回はログイン画面ですので、URLなどのチェックは必要有りません。
とりあえず、今回はここまでです。中途半端ですが、これ以降は説明項目が増えるため、ここで一度中断です。
| FuelBeans 14 : ハウ・ツー・デバッグ< 前 | 次 >FuelBeans 18 : バリバリ、バリデーション |
|---|
| < 前 | 次 > |
|---|