WeekType 欄位
此欄位類型允許使用者修改代表特定 ISO 8601 週數的資料 (例如 1984-W05
)。
可以渲染為文字輸入框或選擇標籤。資料的底層格式可以是字串或陣列。
提示
此表單類型定義和繼承的完整選項列表,可透過在您的應用程式中執行此命令取得
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
的輸入框。
覆寫的選項
empty_data
類型: mixed
此選項的實際預設值取決於其他欄位選項
- 如果
widget
為single_text
,則為''
(空字串); - 否則為
[]
(空陣列)。
此選項決定當提交的值為空 (或遺失) 時,欄位將傳回的值。如果表單在視圖中渲染時未提供初始值,則此選項不會設定初始值。
這表示它可以協助您處理具有空白欄位的表單提交。例如,如果您希望在未選取任何值時,將 name
欄位明確設定為 John Doe
,您可以這樣做
1 2 3 4
$builder->add('name', null, [
'required' => false,
'empty_data' => 'John Doe',
]);
這仍然會渲染一個空白文字框,但在提交時,將會設定 John Doe
值。使用 data
或 placeholder
選項在渲染的表單中顯示此初始值。
注意
如果表單是複合的,您可以將 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
選項總是會覆寫從網域資料 (物件) 中取得的值。這表示當表單編輯已持久化的物件時,物件值也會被覆寫,導致在提交表單時遺失其持久化的值。
help
類型: string
或 TranslatableInterface
預設: 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],
]);
row_attr
類型: array
預設: []
新增至用於渲染 表單類型列 的元素的 HTML 屬性關聯陣列
1 2 3
$builder->add('body', TextareaType::class, [
'row_attr' => ['class' => 'text-editor', 'id' => '...'],
]);
另請參閱
如果您想要將這些屬性新增至 表單類型 widget 元素,請使用 attr
選項。