Otros 10 trucos de Symfony

10 trucos que te ayudarán a desarrollar proyectos con Symfony 4

Image for post
Image for post

1. Incluir directorios para ser procesados por Babel

Encore.configureBabel(function(babelConfig) {}, {include_node_modules: ['bootstrap']})

2. Protección automática contra buscadores

3. Constraint UniqueEntity

// src/Entity/Person.php
namespace App\Entity;

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @UniqueEntity(fields={"email"}, message="Esa cuenta de correo ya está en uso")
*/
class Person {
protected $email;
}

4. Una forma más sencilla de lanzar eventos

$dispatcher->dispatch(MyEvent::EVENT_NAME, $myEvent);
$dispatcher->dispatch($myEvent);
class MyEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
// Before
return [
MyEvent::EVENT_NAME => 'onMyEvent',
];

// After
return [
MyEvent::class => 'onMyEvent',
];
}

// ...
}

5. Evitar que un usuario logueado acceda a la pantalla de login

security:
access_control:
- { path: ^/login$, allow_if: "not has_role('ROLE_USER')" }
- { path: ^/resetting, allow_if: "not has_role('ROLE_USER')" }

6. Evitar el valor null en los checkboxes no marcados

->add('terms', CheckboxType::class)
$builder->addEventListener(

FormEvents::POST_SUBMIT,
function(FormEvent $e) { $contactInfo = $e->getData(); $form = $e->getForm(); $terms = $_POST[$form->getName()]['terms'] ?? false; $contactInfo->setTerms($terms);});

7. Testear con Panther

8. Definir bindings for defecto

namespace App/Service
class MyService {
public function __construct(string $projectDir) {
App/Service/MyService:
arguments:
$projectDir: '%kernel.project_dir%'
# services.yamlservices:
_defaults:
bind:
$projectDir: '%kernel.project_dir%'

9. Sobrescribir servicios de forma rápida

parameters:
parameter_defined_by_the_bundle: App/Service/MyClass

10. Filtrar archivos con el componente Finder

$finder = new Finder();$finder->date('since 1 secs ago');$files = $finder->files()->in($someFolder');

Bonus track

¿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