2012-09-28 12 views
8

he desarrollado un controlador para responder a las peticiones AJAX utilizando JSON:Symfony2: determinar si un controlador se llama desde un entorno de desarrollo o desde un entorno de producción

class PeopleController extends Controller 
{ 
public function listAction() 
{ 
    $request = $this->getRequest(); 

    // if ajax only is going to be used uncomment next lines 
    //if (!$request->isXmlHttpRequest()) 
    //throw $this->createNotFoundException('The page is not found'); 

    $repository = $this->getDoctrine()->getRepository('PeopleManagerBundle:People'); 
    $items = $repository->findAll(); 

    // yes, here we are retrieving "_format" from routing. In our case it's json 
    $format = $request->getRequestFormat(); 

    return $this->render('::base.'.$format.'.twig', array('data' => $items)); 

} 

He activado la vista HTML, como es muy útil para la depuración, pero me gustaría limitar la posibilidad de llamar a este controlador con _format = html mientras la aplicación está en producción. ¿Cómo puedo determinar si se llama un controlador desde un entorno de desarrollo o desde un entorno de producción?

+0

http://stackoverflow.com/questions/8272090/get-environment-inside-controller – moonwave99

Respuesta

19

Recuperar el núcleo desde el contenedor de servicios y utilizar el construido en métodos:

$kernel = $this->get('kernel'); 
$kernel->isDebug(); // in most cases: false if env=prod, true if env=dev/test 
$kernel->getEnvironment(); // prod, dev, test 
Cuestiones relacionadas