D8 Inyección de servicios en la clase controladora (current user) - pierregermain/MyDrupal GitHub Wiki
Inyección de servicios en la clase controladora
Fichero services.yml
No olvides agregar el argumento en el fichero de servicio
services:
mymodule.myclass:
class: Drupal\mymodule\MyClass
arguments: ['@current_user' ]
Acceso directo al contenedor de servicios sin DI
Los servicios disponibles se definen en los archivos .services.yml
if (\Drupal::currentUser()->hasPermission('administer nodes')) {
//...
}
if(\Drupal::service('current_user')->hasPermission('administer nodes')) {
//...
}
Inyección de servicios en la clase controladora (current user)
<?php
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Session\AccountInterface;
class myController extends ControllerBase {
protected $currentUser;
public function __construct(AccountInterface $current_user) {
$this->currentUser = $current_user;
}
public static function create(ContainerInterface $container) {
return new static($container->get('current_user'));
}
}
Uso:
if($this->currentUser->hasPermission('administer nodes')){
//...
}
Inyección de servicios en la clase controladora (current date)
<?php
use Drupal\Core\Datetime\DateFormatter;
// ...
class myController extends ControllerBase {
protected $dateFormatter;
public function __construct(DateFormatter $dateFormatter) {
$this->dateFormatter = $dateFormatter;
}
public static function create(ContainerInterface $container) {
return new static($container->get('date.formatter'));
}
// ...
}
Uso:
$mydate = $this->dateFormatter->format(time(), '', 'Y:m:d');