Simplify the resource controller by joining the create/update methods

This commit is contained in:
Paweł Jędrzejewski 2012-11-04 20:39:56 +01:00
parent 98e7a5b6a3
commit fb0cb28363
2 changed files with 8 additions and 52 deletions

View file

@ -73,24 +73,6 @@ abstract class ResourceController extends Controller implements ResourceControll
return $this->handleView($view); return $this->handleView($view);
} }
/**
* Display form for creating new resource.
*
* @param Request $request
*
* @return Response
*/
public function newAction(Request $request)
{
$resource = $this->createResource();
$form = $this->createResourceForm($resource);
return $this->renderResponse('create', array(
$this->getResourceName() => $resource,
'form' => $form->createView()
));
}
/** /**
* Create resource. * Create resource.
* *
@ -98,14 +80,12 @@ abstract class ResourceController extends Controller implements ResourceControll
* *
* @return Response * @return Response
*/ */
public function postAction(Request $request) public function createAction(Request $request)
{ {
$resource = $this->createResource(); $resource = $this->createResource();
$form = $this->createResourceForm($resource); $form = $this->createResourceForm($resource);
$form->bind($request); if ($request->isMethod('POST') && $form->bind()->isValid()) {
if ($form->isValid()) {
$this->getManipulator()->create($resource); $this->getManipulator()->create($resource);
$this->setFlash('success', sprintf("%s has been created", ucfirst($this->getResourceName()))); $this->setFlash('success', sprintf("%s has been created", ucfirst($this->getResourceName())));
@ -125,24 +105,6 @@ abstract class ResourceController extends Controller implements ResourceControll
return $this->handleView($view); return $this->handleView($view);
} }
/**
* Display form for editing resource.
*
* @param Request $request
*
* @return Response
*/
public function editAction(Request $request)
{
$resource = $this->findResourceOr404($request->get('id'));
$form = $this->createResourceForm($resource);
return $this->renderResponse('update', array(
$this->getResourceName() => $resource,
'form' => $form->createView()
));
}
/** /**
* Update resource. * Update resource.
* *
@ -150,14 +112,12 @@ abstract class ResourceController extends Controller implements ResourceControll
* *
* @return Response * @return Response
*/ */
public function putAction(Request $request) public function updateAction(Request $request)
{ {
$resource = $this->findResourceOr404($request->get('id')); $resource = $this->findResourceOr404($request->get('id'));
$form = $this->createResourceForm($resource); $form = $this->createResourceForm($resource);
$form->bind($request); if ($request->isMethod('POST') && $form->bind($request)->isValid()) {
if ($form->isValid()) {
$this->getManager()->persist($resource); $this->getManager()->persist($resource);
$this->setFlash('success', sprintf("%s has been updated", ucfirst($this->getResourceName()))); $this->setFlash('success', sprintf("%s has been updated", ucfirst($this->getResourceName())));
@ -222,9 +182,7 @@ abstract class ResourceController extends Controller implements ResourceControll
*/ */
protected function createResourceForm(ResourceInterface $resource = null) protected function createResourceForm(ResourceInterface $resource = null)
{ {
return $this->createNamedForm('', $this->getResourceFormType(), $resource, array( return $this->createForm($this->getResourceFormType(), $resource);
'csrf_protection' => false
));
} }
/** /**
@ -308,7 +266,7 @@ abstract class ResourceController extends Controller implements ResourceControll
protected function getIdentifierValue() protected function getIdentifierValue()
{ {
if (!$identifier = $this->getRequest()->attributes->get($this->getIdentifierName())) { if (!$identifier = $this->getRequest()->get($this->getIdentifierName())) {
throw new NotFoundHttpException('No resource identifier supplied'); throw new NotFoundHttpException('No resource identifier supplied');
} }

View file

@ -22,9 +22,7 @@ interface ResourceControllerInterface
{ {
function getAction(Request $request); function getAction(Request $request);
function getCollectionAction(Request $request); function getCollectionAction(Request $request);
function newAction(Request $request); function createAction(Request $request);
function postAction(Request $request); function updateAction(Request $request);
function editAction(Request $request);
function putAction(Request $request);
function deleteAction(Request $request); function deleteAction(Request $request);
} }