簡體   English   中英

是否可以將 Symfony 表單組件與 React.js 一起使用?

[英]Is it possible to use the Symfony form component with React.js?

我正在使用 Symfony 表單組件。 我的項目中有很多表單。

完美地學習表單組件還有很長的路要走,但現在我喜歡它。 我也喜歡自動驗證等。

所以。 現在我想在我的項目中學習和使用 React.js。

但看起來,我無法像以前一樣為項目使用驗證和表單構建器? 我在嗎?

雖然在 API 上下文中,您不會使用表單組件以 HTML 格式( $form->createView()方法)實際呈現表單,但您仍然可以從它提供的所有魔法中受益:驗證、表單事件、等 API 與否,我個人認為您應該始終在控制器突變中使用表單類型。

例如,使用 FOSRestBundle,考慮一些簡單的控制器操作,如下所示:

/**
 * @Rest\Put("posts/edit/{id}", name="posts.edit", requirements={"id"="\d+"})
 *
 * @param Post $post
 * @param Request $request
 *
 * @return Post
 *
 * @throws BadRequestException
 *
 */
public function edit(Post $post, Request $request): Post
{
    $form = $this->createForm(PostType::class, $user);
    $form->handleRequest($request);
    $form->submit($request->request->all());
    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($post);
        $em->flush();

        return $post;
    }

    // Any error handling of your taste.
    // You could consider expliciting form errors.
    throw new BadRequestException();
}

請注意,當然必須創建Post實體和PostType表單。 我不會在這里詳細說明,因為在這種情況下沒有什么特別要說的。

另請注意,我們不檢查表單是否已提交。 在您的情況下,將表單呈現為 React 的工作是 HTML,此操作不會用於獲取任何內容,它只是一個 PUT 路由。 這意味着任何到達那里的請求都必須是一個 PUT 請求,其中包含要由我們的PostType處理的正確數據,在您的情況下通過在 React 中手動構建的 HTML 表單提交。

此外,稍微超出問題的范圍,FOSRestBundle 訂閱您的操作返回的任何內容並自動將其序列化為配置的格式(我猜在您的情況下假設為 JSON)。 這意味着我們的動作示例可以返回兩種可能的響應:

  • 狀態碼為 200 的響應包含我們的序列化帖子。 (您也可以考慮使用 204 並且不返回任何內容。)
  • 狀態碼為 400 的響應包含我們想要的任何內容(假設表單錯誤)。

請允許我引導您查看FOSRestBundle 的文檔

可能不是因為您的表單是供服務器使用的:驗證/顯示錯誤/數據規范化/sanatization/等。

通常您使用 React 來顯示 HTML 並使用 API 將其連接到您的服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM