Laravel 學習筆記(9) - Form 表單

Form

在使用 Model 存取資料庫前,我們要先學會怎麼建立表單 (Form) 及輸入資料。

建立表單

開啟 app/views/home.blade.php,修改如下:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ $title }}</title>
</head>
<body>
    {{Form::open(['url'=>'/', 'method'=>'post'])}}
    {{Form::label('title', 'Title')}}<br>
    {{Form::text('title')}}<br>
    {{Form::label('content')}}<br>
    {{Form::textarea('content')}}<br>
    {{Form::submit('發表文章')}}
    {{Form::close()}}
</body>
</html>
我們可以使用 Form 類別來產生表單,首先要有 open() 及 close(),其他元件則放在其中。

常用元件:
  • label:用來顯示一段文字,通常放在文字輸入框之前,用以說明。
  • text:單行文字輸入框。
  • textarea:多行文字輸入框。
  • submit:執行送出的按鈕。
還有其他許多元件,之後用到再說明。

open() 方法的參數是一個陣列,第一個 url 表示要將資料送到哪個網址去處理。第二個 method 預設是 post。使用 post 通常用來新增資料;put 用來更新資料;delete 則用來刪除資料。

在 Laravel 中,get、post、put、delete 是有特定行為的。

送出表單

接下來要把表單的資料送進資料庫。我們要新增一個 route 來處理表單送來的資料。

開啟 app/routes.php,加入:
Route::post('/', 'HomeController@store');
要接收表單送過來的資料,要使用 Route::post() 方法。接著在 HomeController 新增一個 store 方法來處理。如下:
public function store()
{
    $input = Input::all();
    return $input['title'];
}
這裡我們先簡單的測試是否能取得到使用者輸入的值。執行後,應該會顯示 title 的值。利用 Input 類別,可以取得表單的資料。Input::all() 表示取得全部欄位的資料,以陣列儲存,所以取值方式如同陣列 $input['title']

你也可以使用 Input::get('title');Input::get('title', '預設值'); 的方法取值。

這裡先有個 Form 如何製作及處理的概念,之後就要來實作了。
本文網址:http://blog.tonycube.com/2015/01/laravel-9-form.html
Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀

2 則留言

  1. Class 'Form' not found

    都會出現這段文字?

    需要載入什麼form的class嗎?

    回覆刪除
    回覆
    1. Laravel 5 把 Form class 移除了,
      你可以參考這裡 https://laravelcollective.com/docs/5.0/html 把它加回來

      1.在 composer.json 中加入

      "require": {
      "laravelcollective/html": "~5.0"
      }

      2.然後在命令列執行

      composer update

      3.接著在 config/app.php 中加入

      'providers' => [
      // ...
      'Collective\Html\HtmlServiceProvider',
      // ...
      ],



      'aliases' => [
      // ...
      'Form' => 'Collective\Html\FormFacade',
      'Html' => 'Collective\Html\HtmlFacade',
      // ...
      ],

      這樣就可以用了。

      刪除

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。