🔏
Laravel 4.2 入門
  • 前言
  • Laravel 介紹
    • Laravel 介紹
    • 認識 Laravel
    • 開始之前
  • 進入 Laravel 的世界
    • 進入 Laravel 的世界
    • 安裝 Composer
    • 建立 Laravel 專案
    • Laravel 框架目錄說明
    • Artisan 常用指令說明
  • 基本配置設定
    • 基本配置設定
    • 設定伺服器
    • 建立開發環境
    • 設定 Laravel 網站
  • 動手做-入門
    • 動手做-入門
    • Laravel 的 MVC 模型
    • 使用 Route
    • 使用 View
    • 使用 Controller
    • 使用 Migration 和 Model
    • 使用 Form
    • 第一個小專案:迷你部落格
  • 動手做 - 進階
    • 動手做 - 進階
    • Route 進階
    • Blade 樣板系統
    • Form 進階
    • Form 的資料驗證
  • 資料庫
    • 資料庫
    • Query Builder
    • Eloquent ORM
    • Schema Builder
    • Migrations & Seeding
  • 常用功能實作
    • 常用功能實作
    • 登入驗證
    • 在地化 (多國語言)
    • 分頁
    • 寄信
  • 附錄
    • 附錄
    • 移除 public 結尾
    • Sublime Text 的開發套件
Powered by GitBook
On this page
  • 建立表單
  • Form Model Binding
  • 表單元件
  • Label
  • Input (Text, TextArea, Password, Hidden, Email, File)
  • Checkboxes (複選) 及 Radio (單選)
  • Drop-Down Lists (下拉式清單)
  • Buttons (按鈕)

Was this helpful?

  1. 動手做 - 進階

Form 進階

建立表單

{{ Form::open(['url' => 'foo']) }}
//...
{{ Form::close() }}

使用 open() 及 close() 方法來建立一個表單。open() 方法的參數是以陣列,必須指定要傳送到哪個 url,method 預設為 POST,可省略,如果要指定其他的方法,可自行增加,例如:

{{ Form::open(['url' => 'foo', 'method' => 'put']) }}

你也可以不使用 url,改用 route:

{{ Form::open(['route' => 'route.name']) }}

如果使用 route,記得在 Routes.php 中,必須設定對應的 route name。

route 帶參數:

{{ Form::open(['route' => ['route.name', $user->id] ]) }}

或是使用 action 來指定 Controller:

{{ Form::open(['action' => 'Controller@method']) }}

Controller 帶參數:

{{ Form::open(['action' => ['Controller@method', $user->id] ]) }}

Form Model Binding

表單可以綁定資料模型,可以讓你在需要載入資料到表單欄位時更加方便。在前面的迷你部落格例子中,當我們在編輯文章時,可以改用 Model Binding 的方式來改寫:

原本的

{{Form::open(['url'=>'post/'.$post->id, 'method'=>'put'])}}

改成

{{ Form::model($post, ['action'=>['HomeController@update', $post->id]]) }}

現在這個表單已經和 $post 所儲存的 Post 模型綁定,在之後的欄位,就不需要指定值,只要欄位名稱和 Post 的屬性名稱相同即可。

原本的

{{Form::text('title', $post->title)}}<br>

改為

{{Form::text('title')}}<br>

這裡的 'title' 和 Post 的屬性,也就是資料庫中的欄位同名。因此可以不用 $post->title 指定值。

表單元件

Label

標籤文字,通常放在輸入框的前面,用來說明輸入框內要填入什麼內容。使用方式:

{{ Form::label('title', '標題') }}

如果要加入 HTML 屬性,可以使用第三個參數,陣列型態:

{{ Form::label('title', '標題', ['class'=>'title']) }}

要用到 css 去指定樣式時,可以加入 class 屬性。後面其他的表單元件都可以這麼使用。

Input (Text, TextArea, Password, Hidden, Email, File)

文字輸入框,沒有值的狀態:

{{ Form::text('title') }}
{{ Form::textarea('content') }}
{{ Form::password('password') }}

指定值:

{{ Form::text('title', '這是標題') }}
{{ Form::textarea('content', '這是內容') }}
{{ Form::password('password', '12345678') }}
{{ Form::hidden('id', '5') }}

密碼欄位會以點或星號顯示輸入的文字。

text 可以使用第三個參數加入 HTML 屬性 ['size'=>30] 來改變輸入框的寬度。textarea 則是 ['size'=>'50x50'],中間那個是小寫的 x。

email 及檔案的使用方式:

{{ Form::email('email') }}
{{ Form::file('upload') }}

!重要,當你有使用到 file 欄位時,在 open() 方法中必須加入 ['files' => true] 參數,才能執行上傳的動作,否則上傳欄位是無效的,例如:

{{ Form::open(['url'=>'foo', 'method'=>'post', 'files'=>true]) }}

Checkboxes (複選) 及 Radio (單選)

複選

{{ Form::checkbox('habit', 'reading', true) }}看書<br>

habit 是欄位名稱,reading 是值,true 表示預設為勾選,可以省略不寫,表示不勾選。

單選

{{ Form::radio('city', 'taipei', true) }}Taipei<br>
{{ Form::radio('city', 'taichung') }}Taichung<br>
{{ Form::radio('city', 'kaohsiung') }}Kaohsiung<br>

city 是欄位名稱,同名的視為一組,同一組中只有一個可以被選取。taipei 等第二個參數是值,true 表示選取。

Drop-Down Lists (下拉式清單)

一般清單

{{ Form::select('size', ['L'=>'大','M'=>'中','S'=>'小'], 'M') }}

size 是欄位名稱;第二個參數是陣列,表示清單項目;第三個參數可省略,是前面陣列中的 Key,表示預設選取的項目。

群組清單

{{ Form::select('fruit', [
    'A' => ['apple' => 'Apple'],
    'B' => ['banana' => 'Banana'],
])}}

fruit 是欄位名稱;陣列是清單項目;A 是群組名稱,之後的陣列是屬於該群組的清單項目。

連續數字清單

{{ Form::selectRange('number', 10, 20) }}

number 是欄位名稱,10 是起始值,20 是結束值,這個清單會自動產生 10~20 的數字項目。

月份清單

{{ Form::selectMonth('month') }}

自動產生月份名的清單項目,不過是英文的。

Buttons (按鈕)

Submit

{{ Form::submit('發表文章') }}

Button

{{ Form::button('按鈕') }}
PreviousBlade 樣板系統NextForm 的資料驗證

Last updated 5 years ago

Was this helpful?