來自家庭控制器的真實示例

背景:Household 實體包括一組選項,每個選項都是在管理後端中管理的實體。每個選項都有一個布林 enabled 標誌。如果先前啟用的選項設定為禁用,則需要在以後的家庭編輯中保留,但無法將其刪除。為了實現這一點,如果選項具有 enabled = false,則表單類中的欄位定義將顯示欄位作為禁用的選擇欄位(但由於提交按鈕觸發了刪除 disabled 屬性的 javascript 而保持該欄位。)欄位定義還可以防止禁用選項顯示。

然後,對於給定的家庭實體,表單類需要知道哪些選項已被禁用。已定義一個服務,該服務返回已禁用的選項實體名稱的陣列。那個陣列是 $disabledOptions

    $formOptions = [
        'disabledOptions' => $disabledOptions,
        ];
    $form = $this->createForm(HouseholdType::class, $household, $formOptions);