¿Cómo puedo definir las variables globales en el marco delgado

¿Cómo puedo definir una variable global de modo que mi método de usuario actual pueda funcionar cuando yo quiera, todo lo que necesito hacer es verificar si hay un usuario actual que mi código de ejemplo está debajo

if (isset($_SESSION['company_id'])) { $current_user = Companies::find($_SESSION['company_id']); } else { $current_company = null; } 

¿Cómo puedo usar el método de usuario actual donde quiera sin pasarlo a mi app->render() como en mi header.html

 {% if current_user %} hi {{current_user.name}} {% endif %} 

Puede inyectar un valor en el objeto de la aplicación:

 $app->foo = 'bar'; 

Más sobre la documentación de Slim .

La inyección no funciona en la función de callback.

Para tener acceso a la variable en una función de callback puede usar la función "use() " :

 $mydata = array ( ... ); $app->get('/api', function(Request $request, Response $response) use($mydata) { echo json_encode($mydata); }); 

Inyecta el objeto así:

 $app->companies = new Companies(); 

También puede inyectarlo como singleton si quiere asegurarse de que sea el mismo cada vez:

 $app->container->singleton('companies', function (){ return new Companies(); }); 

La llaman así:

 $app->companies->find($_SESSION['company_id']); 

ACTUALIZAR DOC LINK: Slim Dependency Injection

finalmente pude hacer que funcione con esto

  $app->hook('slim.before.dispatch', function() use ($app) { $current_company = null; if (isset($_SESSION['company_id'])) { $current_company = Company::find($_SESSION['company_id']); } $app->view()->setData('current_company', $current_company); });