laravel4 フォーム構築1

Posted: 2014-03-01 19:07 |  laravel 
フォームの一連の動作等は下記で公開しています
Tutorial.Application


下記の情報は古いです

フレームワークを初めて触る時、
一番気になるのはフォームの作り方では無いでしょうか?

今回はlaravel4のフォームの作り方についてです。
長文のため複数回に分けて記載します。
一連の流れを把握するために、今回はインストール時にデフォルトで用意されている
HomeController.phpは使わずに新たにcontrollerを用意します。
まずは今回はTestControllerとして、app/controllers/TestController.php
を作成します。
コマンドラインから追加する場合は

php artisan controller:make TestController
となり、デフォルトでリソースコントローラーのテンプレートが記載されて生成されます。
コマンドからの発行した場合にこれらを使用しない場合は削除してください。
この時点ではcontrollerにアクセスする事ができませんので、
フレームワークに新しいcontrollerやクラスを通知しなければなりません。
controller、facadeなどを追加する場合は必ず以下のコマンドを実行する必要があります。
php composer.phar dump-autoload
# composerのパスを通している場合は
composer dump-autoload
追加されたcontrollerなどをオートローダーに記載します。
composer.jsonのautoloadをclassmapからpsrに変更すると、
毎回コマンドを実行する必要はなくなります。
コマンド実行後にフォームのURIを/app/routes.php記載します。
laravel4では/app/routes.phpがルーティング記載のファイルとなります。
formの作り方は色々な作り方があるかと思いますが、
今回は
Route::get('/test/form', 'TestController@getForm');
Route::post('/test/confirm', 'TestController@postConfirm');
Route::post('/test/apply', 'TestController@postApply');
フォーム入力画面 /test/form
フォーム確認画面 /test/confirm
完了画面 /test/apply
とします。
一つのURIで実行したい場合は
Route::any('/test/form', 'TestController@getForm');
のみ等で良いかと思います。
これで記載したURIが使用できる様になりました。

早速、test/form の処理になるgetFormを実装します。
これはフォーム入力画面となるので、特に実装すべき処理はありません
public function getForm()
{
	$data['title'] = 'test form';
	return \View::make('test.form', $data);
}
return View::make('test.form', $data); はviewに出力する場合の指定方法となります。
第一引数が表示するtemplate
第二引数がtemplateへ渡すテキストなどになり、型は配列となります。

次にtemplateですが、今回はデフォルトのbladeを使用しますので
ファイル作成はapp/views/test/form.blade.phpとなります。
viewは以下の様に作成します。
{{$title}}
{{ Form::open(array('url' => '/test/confirm', 'method' => 'post')) }}
TITLE	{{ Form::text('title') }}
BODY	{{ Form::textarea('body') }}
{{ Form::submit('confirm') }}
{{ Form::close() }} 
実際にはheaderなどはincludeして使用すると思いますので、
@include('header')などと記載してください。
すべてapp/views/配下を参照します。

{{$title}}はcontroller getFormから渡した配列の値となり($data['title']を指す)、
Smarty等と同様の使用方法です。
{{ Form::open(array('url' => '/test/form/confirm', 'method' => 'post')) }}はformヘルパとなり、
を意味します。
またCSRF対策としてtokenをhiddenで出力します。
URIの指定方法はこの他にいくつかあり、
controllerを直接指定(TestController@getHogeの形式)などがあります。
第一引数はname
第二引数はデフォルト値
第三引数はclass, idなどのattributeを配列で指定します。
{{ Form::submit() }}はサブミットボタンとなります。
尚、これらのヘルパーは vendor/laravel/framework/src/Illuminate/Html/FormBuilder.phpにあります。
次回はバリデート、確認画面〜完了画面への流れとなります。

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014