跳到內容

WeekType 欄位

編輯此頁面

此欄位類型允許使用者修改代表特定 ISO 8601 週數的資料 (例如 1984-W05)。

可以渲染為文字輸入框或選擇標籤。資料的底層格式可以是字串或陣列。

底層資料類型 可以是字串或陣列 (請參閱 input 選項)
渲染為 單一文字框、兩個文字框或兩個選擇欄位
預設無效訊息 請輸入有效的週數。
父類型 FormType
類別 WeekType

提示

此表單類型定義和繼承的完整選項列表,可透過在您的應用程式中執行此命令取得

1
2
# replace 'FooType' by the class name of your form type
$ php bin/console debug:form FooType

欄位選項

此選項決定是否應翻譯選擇值以及在哪個翻譯領域中翻譯。

choice_translation_domain 選項的值可以是 true (重複使用目前的翻譯領域)、false (停用翻譯)、null (使用父翻譯領域或預設領域) 或代表要使用的確切翻譯領域的字串。

placeholder

類型string | array

如果您的 widget 選項設定為 choice,則此欄位將表示為一系列的 select 框。當 placeholder 值為字串時,它將用作所有選擇框的空白值

1
2
3
4
5
use Symfony\Component\Form\Extension\Core\Type\WeekType;

$builder->add('startWeek', WeekType::class, [
    'placeholder' => 'Select a value',
]);

或者,您可以使用陣列,為年份和週數欄位配置不同的 placeholder 值

1
2
3
4
5
6
7
8
use Symfony\Component\Form\Extension\Core\Type\WeekType;

$builder->add('startDateTime', WeekType::class, [
    'placeholder' => [
        'year' => 'Year',
        'week' => 'Week',
    ],
]);

html5

類型boolean 預設true

如果設定為 true (預設值),它將使用 HTML5 類型 (date、time 或 datetime-local) 來渲染欄位。當設定為 false 時,它將使用 text 類型。

當您想要使用自訂 JavaScript 日期選擇器時,這非常有用,因為自訂 JavaScript 日期選擇器通常需要 text 類型而不是 HTML5 類型。

input

類型string 預設array

input 資料的格式 - 即日期儲存在底層物件上的格式。有效值為

  • string (例如 "2011-W17")
  • array (例如 [2011, 17])

從表單傳回的值也將被正規化回此格式。

widget

類型string 預設choice

應渲染此欄位的基本方式。可以是下列其中一項

  • choice:渲染兩個選擇輸入框;
  • text:渲染兩個類型為 text 的欄位輸入框 (年份和週數);
  • single_text:渲染單一類型為 week 的輸入框。

years

類型array 預設:目前年份前十年至目前年份後十年

年份欄位類型可用的年份列表。此選項僅在 widget 選項設定為 choice 時才相關。

weeks

類型array 預設:1 至 53

週數欄位類型可用的週數列表。此選項僅在 widget 選項設定為 choice 時才相關。

覆寫的選項

compound

類型boolean 預設false

此選項指定類型是否包含子類型。此選項在內建類型中會內部管理,因此無需明確配置。

empty_data

類型mixed

此選項的實際預設值取決於其他欄位選項

  • 如果 widgetsingle_text,則為 '' (空字串);
  • 否則為 [] (空陣列)。

此選項決定當提交的值為空 (或遺失) 時,欄位將傳回的值。如果表單在視圖中渲染時未提供初始值,則此選項不會設定初始值。

這表示它可以協助您處理具有空白欄位的表單提交。例如,如果您希望在未選取任何值時,將 name 欄位明確設定為 John Doe,您可以這樣做

1
2
3
4
$builder->add('name', null, [
    'required'   => false,
    'empty_data' => 'John Doe',
]);

這仍然會渲染一個空白文字框,但在提交時,將會設定 John Doe 值。使用 dataplaceholder 選項在渲染的表單中顯示此初始值。

注意

如果表單是複合的,您可以將 empty_data 設定為陣列、物件或閉包。可以為整個表單類別設定此選項,請參閱 如何為表單類別配置空資料 文章,以取得有關這些選項的更多詳細資訊。

警告

表單資料轉換器 仍將應用於 empty_data 值。這表示空字串將轉換為 null。如果您明確想要傳回空字串,請使用自訂資料轉換器。

error_bubbling

預設false

invalid_message

類型string 預設此值無效

如果在此欄位中輸入的資料沒有意義 (即驗證失敗),則會使用此驗證錯誤訊息。

例如,如果使用者在 TimeType 欄位中輸入無法轉換為實際時間的無意義字串,或者如果使用者在數字欄位中輸入字串 (例如 apple),則可能會發生這種情況。

正常的 (業務邏輯) 驗證 (例如設定欄位的最小長度) 應使用驗證規則的驗證訊息來設定 (參考)。

繼承的選項

這些選項繼承自 FormType

attr

類型array 預設[]

如果您想要將額外的屬性新增至 HTML 欄位表示,您可以使用 attr 選項。它是一個關聯陣列,其中 HTML 屬性作為鍵。當您需要為某些 widget 設定自訂類別時,這會很有用

1
2
3
$builder->add('body', TextareaType::class, [
    'attr' => ['class' => 'tinymce'],
]);

另請參閱

如果您想要將這些屬性新增至 表單類型列 元素,請使用 row_attr 選項。

data

類型mixed 預設:預設為底層結構的欄位。

當您建立表單時,每個欄位最初都會顯示表單網域資料的對應屬性的值 (例如,如果您將物件繫結到表單)。如果您想要覆寫表單或個別欄位的此初始值,您可以在 data 選項中設定它

1
2
3
4
5
6
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
// ...

$builder->add('token', HiddenType::class, [
    'data' => 'abcdef',
]);

警告

當渲染時,data 選項總是會覆寫從網域資料 (物件) 中取得的值。這表示當表單編輯已持久化的物件時,物件值也會被覆寫,導致在提交表單時遺失其持久化的值。

disabled

類型boolean 預設false

如果您不希望使用者修改欄位的值,您可以將 disabled 選項設定為 true。任何提交的值都將被忽略。

help

類型stringTranslatableInterface 預設null

允許您為表單欄位定義說明訊息,預設情況下,說明訊息會渲染在欄位下方

1
2
3
4
5
6
7
8
9
10
11
12
13
use Symfony\Component\Translation\TranslatableMessage;

$builder
    ->add('zipCode', null, [
        'help' => 'The ZIP/Postal code for your credit card\'s billing address.',
    ])

    // ...

    ->add('status', null, [
        'help' => new TranslatableMessage('order.status', ['%order_id%' => $order->getId()], 'store'),
    ])
;

help_attr

類型array 預設[]

設定用於顯示表單欄位說明訊息的元素的 HTML 屬性。其值為關聯陣列,其中 HTML 屬性名稱作為鍵。這些屬性也可以在範本中設定

1
2
3
{{ form_help(form.name, 'Your name', {
    'help_attr': {'class': 'CUSTOM_LABEL_CLASS'}
}) }}

help_html

類型boolean 預設false

預設情況下,help 選項的內容在範本中渲染之前會先逸出。將此選項設定為 true 以不逸出它們,當說明包含 HTML 元素時,這會很有用。

inherit_data

類型boolean 預設false

此選項決定表單是否將從其父表單繼承資料。如果您有一組在多個表單中重複的欄位,這會很有用。請參閱 如何使用 "inherit_data" 減少程式碼重複

警告

當欄位設定了 inherit_data 選項時,它會按原樣使用父表單的資料。這表示 資料轉換器 將不會應用於該欄位。

invalid_message_parameters

類型array 預設[]

當設定 invalid_message 選項時,您可能需要在字串中包含一些變數。這可以透過將預留位置新增至該選項並在此選項中包含變數來完成

1
2
3
4
5
$builder->add('someField', SomeFormType::class, [
    // ...
    'invalid_message' => 'You entered an invalid value, it should include %num% letters',
    'invalid_message_parameters' => ['%num%' => 6],
]);

mapped

類型boolean 預設true

如果您希望在讀取或寫入物件時忽略該欄位,您可以將 mapped 選項設定為 false

row_attr

類型array 預設[]

新增至用於渲染 表單類型列 的元素的 HTML 屬性關聯陣列

1
2
3
$builder->add('body', TextareaType::class, [
    'row_attr' => ['class' => 'text-editor', 'id' => '...'],
]);

另請參閱

如果您想要將這些屬性新增至 表單類型 widget 元素,請使用 attr 選項。

欄位變數

變數 類型 用法
widget mixed widget 選項的值。
type string 僅當 widget 為 single_text 且 HTML5 已啟用時存在,包含要使用的輸入類型 (datetimedatetime)。
本作品,包含程式碼範例,依據 Creative Commons BY-SA 3.0 授權條款授權。
目錄
    版本