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);
}
/**
* 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.
*
@ -98,14 +80,12 @@ abstract class ResourceController extends Controller implements ResourceControll
*
* @return Response
*/
public function postAction(Request $request)
public function createAction(Request $request)
{
$resource = $this->createResource();
$form = $this->createResourceForm($resource);
$form->bind($request);
if ($form->isValid()) {
if ($request->isMethod('POST') && $form->bind()->isValid()) {
$this->getManipulator()->create($resource);
$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);
}
/**
* 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.
*
@ -150,14 +112,12 @@ abstract class ResourceController extends Controller implements ResourceControll
*
* @return Response
*/
public function putAction(Request $request)
public function updateAction(Request $request)
{
$resource = $this->findResourceOr404($request->get('id'));
$form = $this->createResourceForm($resource);
$form->bind($request);
if ($form->isValid()) {
if ($request->isMethod('POST') && $form->bind($request)->isValid()) {
$this->getManager()->persist($resource);
$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)
{
return $this->createNamedForm('', $this->getResourceFormType(), $resource, array(
'csrf_protection' => false
));
return $this->createForm($this->getResourceFormType(), $resource);
}
/**
@ -308,7 +266,7 @@ abstract class ResourceController extends Controller implements ResourceControll
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');
}

View file

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