Created
February 21, 2016 06:35
-
-
Save jazlopez/c916289388ba6c66cbc1 to your computer and use it in GitHub Desktop.
Abstract BackOffice Base Controller
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace BackOfficeBundle\Controller; | |
use Symfony\Bundle\FrameworkBundle\Controller\Controller; | |
/** | |
* Class BackOfficeBaseController | |
* @author Jaziel Lopez <[email protected]> | |
* @package BackOfficeBundle\Controller | |
*/ | |
abstract class BackOfficeBaseController extends Controller | |
{ | |
/** | |
* Extended Class Controller Name | |
* | |
* @var | |
*/ | |
public $entity; | |
/** | |
* Route for inserting new products | |
* | |
* @var string $routeInsert | |
*/ | |
public $routeInsert; | |
/** | |
* Route for updating existing products | |
* | |
* @var string $routeUpdate | |
*/ | |
public $routeUpdate; | |
/** | |
* Template Data | |
* | |
* @var Array $templateData | |
*/ | |
public $templateData; | |
/** | |
* Template post action | |
* | |
* @var string $postTo | |
*/ | |
public $postTo; | |
/** | |
* Response | |
* | |
* @var Response $response | |
*/ | |
public $response; | |
/** | |
* @var | |
*/ | |
public $request; | |
/** | |
* Get logged user | |
* @return \BackOfficeBundle\Entity\User|null|object | |
*/ | |
public function getLoggedUser(){ | |
return $this->em()->getRepository('BackOfficeBundle:User')->find($this->getUser()->getId()); | |
} | |
/** | |
* Get Entitiy Manager | |
* | |
* @return ORM\EntityManager | |
*/ | |
public function em() | |
{ | |
return $this->getDoctrine()->getManager(); | |
} | |
/** | |
* Collect return parameters | |
* Id in url determines the post back location | |
* Eval If there is a product object that needs to be displayed in the form | |
* If so, display it | |
* If not, get the request data and display it | |
* @param int $id | |
* @return array | |
*/ | |
public function getTemplateData($id = null){ | |
$this->postTo = (is_numeric($id)) ? | |
$this->routeUpdate : $this->routeInsert; | |
$this->templateData = (!empty($this->entity)) ? (array)$this->entity : $this->request->request->all(); | |
/** | |
* Start transforming the object from Entity to array | |
*/ | |
foreach((array)$this->templateData as $key => $value){ | |
$name = explode('\\', $key); | |
$key = preg_replace( "/[^a-z0-9 ]/i", "_", $name[count($name)-1]); | |
$key = preg_replace('/\B([A-Z])/', '_$1', $key); | |
$key = strtolower($key); | |
$this->templateData[$key] = $value; | |
} | |
$this->templateData['post'] = (is_numeric($id)) ? $this->generateUrl($this->postTo, ['id' => $id]) : | |
$this->generateUrl($this->postTo); | |
return $this->templateData; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment