Symfoware

Symfowareについての考察blog

PHPフレームワーク「Laravel」でFormタグを生成する

PHPフレームワーク「Laravel」の使い方を調べています。
PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する

今回は、Formタグの出力方法について調べてみます。
http://laravel.com/docs/html



Form::open



Form::openでフォームの開始タグ、Form::close()でフォームの終了タグが生成できます。


  1. <?php
  2. // app/routes.php
  3. Route::get('/', function() {
  4.     
  5.     return View::make('sample');
  6. });





  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         {{ Form::open(array('url' => 'foo/bar')) }}
  5.             Formの中身
  6.         {{ Form::close() }}
  7.     </body>
  8. </html>






表示してみると、こんなhtmlが生成されました。
※一部改行を入れています。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <form method="POST" action="http://192.168.1.102/foo/bar" accept-charset="UTF-8">
  5.         <input name="_token" type="hidden" value="ioHtfZVOZpNRRa0OBhd7BcnUznv1z40rFJI3wqvI">
  6.             Formの中身
  7.         </form>
  8.     </body>
  9. </html>





actionには、自動的にサーバーへのURLが付加されます。






名前付きルート、コントローラー指定



actionの指定は、url以外に
「route」でルートの名前
「action」でコントローラーアクションを指定できます。

ルートの名前の付け方や、コントローラーアクションはここで学びました。
PHPフレームワーク「Laravel」でコントローラーを使用する


サンプルはこのようになります。


  1. <?php
  2. // app/routes.php
  3. Route::get('/', array(
  4.     'uses' => 'MyController@show',
  5.     'as' => 'mycon_name'
  6. ));





  1. <?php
  2. // app/app/controllers/MyController.php で保存
  3. class MyController extends BaseController {
  4.     public function show() {
  5.         
  6.         return View::make('sample');
  7.     }
  8. }





  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         {{ Form::open(array('route' => 'mycon_name')) }}
  5.             route指定
  6.         {{ Form::close() }}
  7.         
  8.         {{ Form::open(array('action' => 'MyController@show')) }}
  9.             コントローラー指定
  10.         {{ Form::close() }}
  11.     </body>
  12. </html>





生成されるhtmlはこんな感じ。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <form method="POST" action="http://192.168.1.102" accept-charset="UTF-8">
  5.             <input name="_token" type="hidden" value="ioHtfZVOZpNRRa0OBhd7BcnUznv1z40rFJI3wqvI">
  6.             route指定
  7.         </form>
  8.         
  9.         <form method="POST" action="http://192.168.1.102" accept-charset="UTF-8">
  10.             <input name="_token" type="hidden" value="ioHtfZVOZpNRRa0OBhd7BcnUznv1z40rFJI3wqvI">
  11.             コントローラー指定
  12.         </form>
  13.     </body>
  14. </html>









ルートパラメーターの指定



遷移先のURLにパラメーターを付与したい場合は、アクションと共に値を指定します。


  1. <?php
  2. // app/routes.php
  3. Route::get('/test/{id}', array(
  4.     'uses' => 'MyController@show',
  5.     'as' => 'mycon_name'
  6. ));





  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         {{ Form::open(array('route' => array('mycon_name', 10))) }}
  5.             route指定
  6.         {{ Form::close() }}
  7.         
  8.         {{ Form::open(array('action' => array('MyController@show', 20))) }}
  9.             コントローラー指定
  10.         {{ Form::close() }}
  11.     </body>
  12. </html>





生成されるhtmlは以下のとおり。


  1. <!-- app/views/sample.blade.php で保存 -->
  2. <html>
  3.     <body>
  4.         <form method="POST" action="http://192.168.1.102/test/10" accept-charset="UTF-8">
  5.             <input name="_token" type="hidden" value="ioHtfZVOZpNRRa0OBhd7BcnUznv1z40rFJI3wqvI">
  6.             route指定
  7.         </form>
  8.         
  9.         <form method="POST" action="http://192.168.1.102/test/20" accept-charset="UTF-8">
  10.             <input name="_token" type="hidden" value="ioHtfZVOZpNRRa0OBhd7BcnUznv1z40rFJI3wqvI">
  11.             コントローラー指定
  12.         </form>
  13.     </body>
  14. </html>

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/08/18(月) 23:05:37|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Windows Server 2012 R2にActiveDirectoryの機能を追加する | ホーム | PHPフレームワーク「Laravel」でビューにテンプレート(Blade)を使用する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1467-3732959a
この記事にトラックバックする(FC2ブログユーザー)