public function dispatch($action, Sonata_TemplateView $templateView) { $this->preDispatch(); if (in_array($action, get_class_methods($this))) { $res = $this->{$action}(); if (substr($action, -6) == 'Action') { if (is_null($res) || empty($res)) { $res = self::ACTION_SUCCESS; } $templateViewName = null; $resource = $this->request->getParameter('resource'); switch ($res) { case self::ACTION_SUCCESS: $templateViewName = substr($action, 0, strlen($action) - 6); break; case self::ACTION_FAILURE: $templateViewName = 'Error'; $resource = null; break; default: $templateViewName = $res; break; } // Assign template vars $templateView->assign($this->varHolder->getAll()); // Render template and save raw data $rawData = $templateView->render($templateViewName, $resource, $this->request->getParameter('format')); // Append raw data to response body $this->response->appendToBody($rawData); } } else { $this->__call($action, array()); } $this->postDispatch(); }