20 trucos para Symfony 4

Trucos de Symfony 4 que te ayudarán a resolver algún que otro problema

Image for post
Image for post
20 trucos para Symfony 4

1. Crear excepciones HTTP directamente desde el controlador

throw $this->createNotFoundException('message'); // 404throw $this->createAccessDeniedException('message'); // 403

2. Bindear parámetros por su nombre

services:  _defaults:    autowire: true    autoconfigure: true    bind:      $clientSecret: '%clientSecret%'

$myAwesomeService: '@my_awersome_service'

3. Autoinvocar controladores

a_route:  path: /some-path  controller:  App\Controller\AnyController
class AnyController extends AbstractController {  public function __invoke( // services ) {

// code

4. Inyectar repositorios

construct(AnyRepository $anyRepository) {
// constructor
}

5. Ordenar consultas a Doctrine

$repository->findBy(
[ 'field' => 'value'],
[ 'fieldToOrder' => 'ASC'],
$limit,
$offset
);

6. Definir un commando más rápido (aún)

protected static $defaultName = 'app:command-name';

7. Inyectar servicios en comandos

public function __construct(ServiceInterface $aService) {  $this->aService = $aService;  parent::__construct();}
use Symfony\Component\Console\Command\Command;

8. Incluir archivos generados por webpack

<link rel="stylesheet" href="{{ asset('build/file.css') }}"><script src="{{ asset('build/file.js') }}"></script>
{{ encore_entry_link_tags('entryName') }}{{ encore_entry_script_tags('entryName') }}

9. Inicialización de los tests

protected function setUp() {}protected function tearDown() {}

10. Comando make para generar entidades

bin/console make:entity

11. Comando make para generar administradores

bin/console make:sonata:admin

12. Enumerados

<?phpnamespace App\Enum;class SimpleEnum {  private static $types = [
'a' => self::A,
'b' => self::B
];
const A = 1;
const B = 2;
public static function getValues(){
return self::$types;
}
public static function fromString($index){
return self::$types[$index];
}
public static function toString($value){
return array_search($value, self::$types);
}
}

13. Traducir las rutas

route_name:
controller: App\Controller\AnyController::actionName
path:
es: /path
en: /translated-path

14. Doctrine migrations

bin/console make:migrationbin/console doctrine:migrations:migrate

15. Devolver un código de error HTTP al renderear un archivo twig

return new Response(  $this->renderView(    'error.html.twig',    ['error' => $e->getMessage()],    Response::HTTP_BAD_REQUEST  ));

16. Comprobar si un usuario ha iniciado sesión

$user = $this->getUser();if ($user) {}
$this->isGranted('IS_AUTHENTICATED_FULLY')
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');

17. Property Accessor

18. Doctrine event listener

19. Traducir fechas en twig

composer require twig/extensions
services:_defaults:  public: false  autowire: true  autoconfigure: true#Twig\Extensions\ArrayExtension: ~Twig\Extensions\DateExtension:  arguments: ['@translator']Twig\Extensions\IntlExtension: ~#Twig\Extensions\TextExtension: ~

20. Los CacheAdapters

Final

¿Quieres recibir más artículos como este?

Written by

Entre paseo y paseo con Simba desarrollo en Symfony y React

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store