[英]Symfony2 FOSRestBundle return entity fields contained in form
我在Symfony2中使用FOSRestBundle提供REST服務。
當前,當請求資源時,我的控制器返回一個實體(例如/users/40
)。 前端包含一種表格,該表格允許處理此資源,並使用PUT將其發送回去。 控制器使用一種表格來處理數據。
我的問題是,表單的字段少於整個實體的字段( id
和password_hash
是很好的示例)。 我得出的結論是,將整個實體發送給客戶是一個壞主意。 相反,我希望FOSRestBundle僅發送表單中可用的實體字段。
所以我只是嘗試:
return $this->createForm(UserType::class, $entity);
FOSRestBundle從服務器返回的JSON結構看起來非常好。 但不幸的是,它不包含值。
當然,它不是-表單沒有綁定。 在這一點上,綁定數據沒有任何意義。 因此,我需要找到另一個解決方案。
這種用例在我的應用程序中將很常見。 所以我想知道是否沒有簡單/標准的方法來實現這一目標。
(PS我在前端使用Angular JS。我只是將實體資源JSON附加到作用域,並使用symfony表單模板生成自動綁定到作用域的正確對象的表單字段)
定義應該從FOS返回什么的標准方法是使用序列化程序組以及Symfony序列化程序組件或JMS序列化程序。
在這兩種情況下,您都可以在實體屬性上定義組:
// in the entity
use Symfony\Component\Serializer\Annotation\Groups;
class Story
{
/**
* @Groups({"story"})
*
* @var int
*/
private $id;
接着:
// in the controller
* @Rest\View(serializerGroups={"story"})
* @Rest\Route("stories")
*
* @return Story[]
*/
public function getStoriesAction()
這將返回一個或多個具有與公開的控制器序列化程序組匹配的屬性的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.