Symfoware

Symfowareについての考察blog

PHPフレームワーク「Laravel」でフォームの値を取得する

PHPフレームワーク「Laravel」の使い方を調べています。
PHPフレームワーク「Laravel」でルーティングの使い方

今回はフォームに入力された値の取得方法を調べてみます。
http://laravel.com/docs/requests


Input::get



フォームの入力を取得するには「Input::get」を使用します。
テスト用に、入力欄を用意したhtmlファイルを作成しました。


  1. <html>
  2. <body>
  3.     <form action="/" method="post">
  4.         <input type="text" name="user_name">
  5.         <input type="submit">
  6.     </form>
  7. </body>
  8. </html>




このファイルをLaravelプロジェクトのpublicディレクトリに保存しました。
postされた値を受け取るロジックをapp/routes.phpに記載します。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     $name = Input::get('user_name');
  5.     return "User Name : {$name}";
  6. });




適当な値を入力して送信。

448_01.png


ちゃんと値が受け取れました。

448_02.png


Input::getの第二引数に、指定したnameタグが存在しなかった場合の
デフォルト値を指定できます。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     $name = Input::get('user_name', 'default_value');
  5.     return "User Name : {$name}";
  6. });





「値が入力されていなかったら」ではなく「name="user_name"が存在しなかったら」
デフォルト値が採用されます。




Input::has




入力値の検証を行いたい場合は、「Input::has」を使用します。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     if (Input::has('user_name')) {
  6.         return 'user_nameは' . Input::get('user_name');
  7.     }
  8.     return 'user_nameが入力されていません。';
  9. });




空白のまま送信すると、false。

448_03.png

448_04.png


何か値が入力されていればtrueになります。
半角スペースのみの入力はfalseになりましたが、全角の場合はtrueになります。

448_05.png

448_06.png




Input::all()



Input::allで入力されている内容を全て取得することができます。
htmlファイルをこんな感じに変更しました。


  1. <html>
  2. <body>
  3.     <form action="/" method="post">
  4.         名前:<input type="text" name="user_name"><br/>
  5.         住所:<input type="text" name="address"><br/>
  6.         電話番号:<input type="text" name="tel"><br/>
  7.         <input type="submit">
  8.     </form>
  9. </body>
  10. </html>




routes.phpは以下のとおり。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     return Input::all();
  6.     
  7. });




適当な値を入力して送信すると、全ての内容が表示されました。

448_07.png

448_08.png





Input::only



全ての項目ではなく、指定した項目を取得したい場合は「Input::only」を使用します。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     return Input::only('user_name', 'tel');
  6.     
  7. });




ちゃんと指定した項目だけが取得出来ました。

448_09.png




Input::except



Input::onlyの逆、指定した項目以外の値を取得たい場合は「Input::except」を使用します。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     return Input::except('user_name');
  6.     
  7. });





「user_name」以外の項目が取得出来ました。

448_10.png






配列の値の取得



例えば、こんなhtml。


  1. <html>
  2. <body>
  3.     <form action="/" method="post">
  4.         0:<input type="text" name="user_name[]"><br/>
  5.         1:<input type="text" name="user_name[]"><br/>
  6.         2:<input type="text" name="user_name[]"><br/>
  7.         <input type="submit">
  8.     </form>
  9. </body>
  10. </html>




「user_name」を取得すると、配列全ての値が取得できます。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     return Input::get('user_name');
  6.     
  7. });




448_11.png

448_12.png



「user_name.1」というような指定で、特定箇所の値を取得できます。


  1. <?php
  2. Route::post('/', function()
  3. {
  4.     
  5.     return Input::get('user_name.1');
  6.     
  7. });



448_13.png


関連記事

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

  1. 2014/08/11(月) 21:27:38|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHPフレームワーク「Laravel」でクッキーを使用する | ホーム | PHPフレームワーク「Laravel」でルーティングの使い方>>

コメント

コメントの投稿


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

トラックバック

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