亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Symfony:從變量中獲取 FormType 名稱

Symfony:從變量中獲取 FormType 名稱

PHP
慕的地8271018 2021-10-22 15:12:22
在我的項目中,當我更改選擇時,ajax 調用會獲取一個新的選擇元素并將其替換為我當前的元素。所以基本上,我的 Ajax 調用是/ticket/owner-select為了獲取所有者選項。一切正常。這是我的網址控制器://TicketController.php.../** * @Route("/ticket/owner-select", name="app_ticket_owner_select", methods={"GET"}, condition="request.isXmlHttpRequest()") */public function getTicketOwnerSelect(Request $request, DepartmentRepository $departmentRepository){    $department = $departmentRepository->findOneBy(['id' => $request->query->get('value')]); //gets id from get-parameter    if(!$department) {        return new Response(null, 204); //return empty response if no department selected or found    }    $ticket = new Ticket();    $ticket->setDepartment($department);    $form = $this->createForm(TicketType::class, $ticket);    if(!$form->has('owner')) {        return new Response(null, 204); //return empty response    }    return $this->render('ticket/select.html.twig', ['form' => $form->createView()]); //render the select element with correct options}...現在我想為其他FormType重用完全相同的 url ,因為我有多個表單,其中所有者根據另一個選擇字段而改變。例子:$form = $this->createForm(TicketType::class, $ticket);$form = $this->createForm(AnotherTicketType::class, $ticket);$form = $this->createForm(AnotherAnotherTicketType::class, $ticket);所以 FormType 應該是動態的??赡茏詈玫姆椒ㄊ橇硪粋€ get 參數,但我不太確定如何做到這一點,尤其是檢查該類型是否存在(錯誤處理)。原因:對于每個工單表單上的每個選擇字段,控制器看起來都一樣。由于我不想要重復的代碼(大部分),我想創建一個動態解決方案。Mabye有人可以幫助我。提前致謝。
查看完整描述

2 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

您已經通過 ajax 請求(id參數)中的查詢字符串將參數傳遞給控制器,所以我假設您知道如何添加新參數,比如說type.


由于::class只返回一個具有完全限定類名的字符串,您可以使用這個新參數來構建您的FormType類并正常實例化它。如果請求的類型不存在,createForm將拋出InvalidArgumentException.


$ticketType = $request->query->get('type', ''); // Set 'main' type if not specified

$ticketFormType = 'App\Form\' . $ticketType . 'TicketType';


$ticket = new Ticket();


try {

    $form = $this->createForm(TicketType::class, $ticket);

} catch (Symfony\Component\Form\Exception\InvalidArgumentException $e) {

     // FormType doesn't exist

     return new Response(null, 400);

}


return $this->render('ticket/select.html.twig', ['form' => $form->createView()]);


查看完整回答
反對 回復 2021-10-22
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

帶有類型的隱藏字段怎么樣?


查看完整回答
反對 回復 2021-10-22
  • 2 回答
  • 0 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號