2016-12-29 16 views
5

Kaynak oluşturmak için kullandığım POST uç noktaları için Symfony Form Bileşenini FOSRestBundle ile nasıl kullanmam gerektiği açık değil. İşte FOSRestBundle'da Symofny Formları ile POST isteklerini işleme

benim POST denetleyicisi eylem var ne:

//GuestController.php 
public function cpostAction(Request $request) 
{ 
    $data = json_decode($request->getContent(), true); 

    $entity = new Guest(); 
    $form = $this->createForm(GuestType::class, $entity); 

    $form->submit($data); 

    if ($form->isValid()) { 
     $dm = $this->getDoctrine()->getManager(); 
     $dm->persist($entity); 
     $dm->flush(); 

     return new Response('', Response::HTTP_CREATED); 
    } 

    return $form; 
} 

Ne yapmam geçerli:

  1. son nokta (/guests) bir application/json POST isteği gönderme;
  2. Bir varlığa bağlanan bir form örneği oluşturun (Guest);
  3. JSON'u gönderdiğim için, formunu ($form->submit($data)) göndermeden önce json_decode istek gövdesine ihtiyacım var.

Ben soruları:

  1. Gerçekten hep json_decode()Request içerik gerek var mı elle Form göndermeden önce? Bu işlem FosRestBundle ile bir şekilde otomatikleştirilebilir mi?
  2. denetçi eylemine application/x-www-form-urlencoded veri göndermek için mümkün mü ve bunun ele var:

-

$form->handleRequest($request) 
if ($form->isValid()) { 
    ... 
} 
... 

Yukarıda işe almak edemedi formu örneği ibraz asla .

/** 
* @ParamConverter("guest", converter="fos_rest.request_body") 
*/ 
public function cpostAction(Guest $guest) 
{ 
    $violations = $this->getValidator()->validate($guest); 

    if ($violations->count()) { 
     return $this->view($violations, Codes::HTTP_BAD_REQUEST); 
    } 

    $this->persistAndFlush($guest); 

    return ....; 
} 
-

: -

  • doğrudan doğrulayıcı ile birlikte bir ParamConverter kullanılmasına göre Formu Bileşeni kullanmanın bir avantajı var mı
      burada fikir

      Teşekkürler!

  • +0

    Belki de [bu] (https://www.cloudways.com/blog/rest-api-in-symfony-3-1/) makalesi size yardımcı olabilir. –

    +0

    Benim görüşüme göre fos_rest yapılandırmanızla ilgili. Burada paylaşır mısınız? –

    cevap

    0

    Aynı şeyi size yapmaya çalışıyorum ve bu konu için bazı cevaplar bulmak zor. Bugün mobil uygulamalar için api istirahat ile web sitesi geliştirmek için önemli bir konu olduğunu düşünüyorum. Neyse!

    Gerçekten her zaman forma göndermeden önce manuel) (İstek içeriği json_decode zorunda mıyım:

    aşağıda benim cevap bulmak Lütfen?

    Hayır, olsun gibi verileri bu $ params = $ request-> query-> tüm(); $ user-> setUsername ($ params ['fos_user_registration_form'] ['kullanıcı adı']);

    bu süreç bir şekilde FosRestBundle ile otomatik hale getirilebilir?

    Sanmıyorum.

    denetçi eylemine application/x-www-form-urlencoded veri göndermek ve

    Evet ele sahip olmak mümkün mü, ama şu anda işlemek çalışıyorum Benim formum böyle ve bunu yapamam.

    No

    Ben olmazsam ben tahmin ediyorum: -

    doğrudan doğrulayıcı ile birlikte bir ParamConverter kullanılmasına göre Formu Bileşeni kullanmanın bir avantajı var mı burada fikir Sadece kullanıcı ile kayıt olmak için gidiyor:
    $ userManager = $ this-> get ('fos_user.user_manager');

    ve denetimimi el ile yapın.

    Burada bir sorun yayınlanmıştır ve ben bekliyorum: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/2405

    daha fazla bilgi almak için başardınız?