回到最上方

文件

表單及HTML

開啟表單

開啟表單

{{ Form::open(array('url' => 'foo/bar')) }}
    //
{{ Form::close() }}

預設表單使用 POST 方法,當然你也可以指定其他傳送表單的方法:

echo Form::open(array('url' => 'foo/bar', 'method' => 'put'))

注意: 因為 HTML表單只支援 POST 方法,所以在使用 PUTDELETE 的方法時,Laravel將會自動加入隱藏的 _method 欄位到表單中,來偽裝表單傳送的方法。

你也可以建立一個指向命名的路由或控制器至表單:

echo Form::open(array('route' => 'route.name'))

echo Form::open(array('action' => 'Controller@method'))

如果你的表單允許上傳檔案,可以加入 files 選項到參數中:

echo Form::open(array('url' => 'foo/bar', 'files' => true))

CSRF保護

Laravel 提供簡易的方法,讓你可以保護你的應用程式不受到 CSRF (跨網站請求偽造) 攻擊,首先 Laravel 會自動在使用者的 session 中放置一個隨機的標記,這個 CSRF 參數會用隱藏欄位的方式自動加到你的表單中,你也可以使用 token 的方法去產生這個隱藏的 CSRF 標記欄位:

加入 CSRF 標記到表單

echo Form::token();

加入 CSRF 標記到路由中

Route::post('profile', array('before' => 'csrf', function()
{
    //
}));

標單模組綁定

你可以使用 Form::model 的方法,將模型 (model) 中的內容加入到表單中:

開啟模型表單

echo Form::model($user, array('route' => array('user.update', $user->id)))

當你產生表單元素時,像是 text 欄位,模型的值將會自動比對到欄位名稱,並設定此欄位值,舉例來說,使用者模組的 email 屬性,將會設定到名稱為 email 的 text 欄位的欄位值,不僅如此,當 Session 中有與欄位名稱相符的名稱, Session 的值將會優先於模型的值,而優先順序如下所示:

  1. Session 的資料 (舊的輸入值)
  2. 明確傳遞的資料
  3. 模組屬性資料

這樣可以快速地建立表單,不僅是綁定模組資料,也可以在伺服器端資料驗證錯誤時,輕鬆的回填使用者輸入的舊資料!

注意: 當使用 Form::model 方法時,必須確保有使用 Form::close 方法去關閉表單!

Labels

產生標籤 (Label) 元素

echo Form::label('email', 'E-Mail Address');

指定額外的 HTML 屬性

echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));

注意: 在建立標籤時,任何你建立的表單元素名稱與標籤相符時,將會自動在 ID 屬性建立與標籤名稱相同的 ID

Text, Text Area, Password 及 Hidden Fields

產生 Text 輸入欄位

echo Form::text('username');

指定預設值

echo Form::text('email', 'example@gmail.com');

注意: hiddentextarea 方法與 text 使用屬性參數是相同的

產生 Password 輸入欄位

echo Form::password('password');

Checkboxes 及 Radio Buttons

產生 Checkbox 或 Radio 輸入欄位

echo Form::checkbox('name', 'value');

echo Form::radio('name', 'value');

產生已被選擇的 Checkbox 或 Radio 輸入欄位

echo Form::checkbox('name', 'value', true);

echo Form::radio('name', 'value', true);

檔案

產生 File 輸入欄位

echo Form::file('image');

下拉式選單

產生下拉選單

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));

產生選擇預設值的下拉選單

echo Form::select('size', array('L' => 'Large', 'S' => 'Small'), 'S');

產生群組清單

echo Form::select('animal', array(
    'Cats' => array('leopard' => 'Leopard'),
    'Dogs' => array('spaniel' => 'Spaniel'),
));

按鈕

產生 Submit 輸入欄位

echo Form::submit('Click Me!');

注意: 需要產生 Button 元素嗎? 可以試著使用 button 方法去產生 Button元素,button 方法與 submit 使用屬性參數是相同的

自訂巨集

你可以輕鬆的定義你自己的表單類別 Helper 叫 "巨集 (macros)",首先只要註冊 巨集 ,並給預期名稱及封閉函式,以下是巨集的使用範例:

註冊表單巨集

Form::macro('myField', function()
{
    return '<input type="awesome">';
});

使用 macro 註冊名稱呼叫你的自訂方法:

呼叫自訂表單巨集

echo Form::myField();

討論