2014-09-03 3 views
1

Symfony2에서 FOSRestBundle을 사용하여 REST API를 구축하고 있습니다. Form을 사용하여 Doctrine2로 엔티티를 만들고 업데이트합니다. 모든 양식 필드를 보내면 모든 것이 잘 작동합니다. 예 :Symfony2 REST API - 부분 업데이트

사람이 잘 삽입되었지만 이제는 성만 업데이트하고 싶습니다.

{"last_name":"Wi"} 

문제는 (이 부여되지 않기 때문에) 형태가 "NULL"값을 가진 개체를 업데이트하기 때문에 첫 번째 이름 업데이트 후 비어있는 것입니다. 성을 업데이트하고 이름을 무시할 수 있습니까?

답변

8

물론 가능합니다.

첫 번째로 PATCH 요청 인 RESTful 측면에서 the ClassResourceInterface based controller approach을 사용하는 경우 컨트롤러에 patchAction 메서드를 추가해야합니다.

제출 된 양식을 처리 할 때 다음,이 같은 컨트롤러에서 양식의 제출 메소드 호출에 false$clearMissing 옵션을 통과해야합니다 :

<?php 
// in your controller's patchAction: 

/** @var \Symfony\Component\Form\FormInterface $form */ 
/** @var \Symfony\Component\HttpFoundation\Request $request */ 

$form->submit($request, false); 

이 단지에 양식 구성 요소를 알려드립니다 누락 된 필드를 지우지 않고 양식에서 전달 된 필드를 업데이트하십시오 (매개 변수 이름 에서처럼). 참조 용으로 source code을 참조하십시오.

RequestFormInterface::submit() 방법으로 전달하는 것은 Symfony 3.0부터 지원 중단 될 예정이므로 Symfony 2.x에 대한 답변입니다.

+0

docs에서 : "submit()'메소드는 더 이상 사용되지 않으며 심포니 3.0에서 삭제 될 것입니다." – NDM

+0

@NDM, 정확한 링크를 제공 할 수 있습니까? submit()에서 찾은 유일한 것은 입니다. >> submit()에 직접 요청을 전달하는 것은 여전히 ​​작동하지만 더 이상 사용되지 않으며 Symfony 3.0에서 제거됩니다. http://symfony.com/doc/current/cookbook/form/direct_submit.html#passing-a-request-to-form-submit-deprecated – kix

+1

감사합니다. 그러나, 그것은 권장되지 않습니다 ;-) 그러나, 당신은 내게 새로운 Google 검색을 할 수있는 올바른 키워드를 주었고 StackOverflow에서 이것을 발견했습니다 : http://stackoverflow.com/questions/19793767/does-symfony-2-support-partial -form-binding. handleRequest를 사용하여 요청 메소드가 'PATCH'인지 확인할 수 있습니다. 대부분의 브라우저는 PATCH 요청을 보내지 않으므로'_method'를 사용하여 메소드를 무시할 수 있습니다. 그런 다음 상자에서 작동합니다! :-) 나는 당신의 대답을 받아들입니다. –