Diversas Melhorias no Symfony 4.1 (Parte 3)

Permitir definir a estratégia de arredondamento para o MoneyType

No Symfony 4.1, o campo de formulário MoneyType define uma nova opção chamada rounding_mode para controlar como os valores são arredondados. Antes, todos os valores eram arredondados para o “vizinho mais próximo” (ROUND_HALF_UP), de modo que 15,999 é arredondado como 16,00. Agora, você pode configurá-lo por exemplo para ROUND_DOWN para exibi-lo como 15,99:

use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
// ...

$builder->add('price', MoneyType::class, array(
'rounding_mode' => NumberToLocalizedStringTransformer::ROUND_DOWN,
));

Adicionando e removendo atributos LDAP mais eficientemente

Atualizar entradas LDAP com o update() é lento em alguns cenários. É por isso que no Symfony 4.1 existem dois novos métodos chamados addAttributeValues() e removeAttributeValues() que adicionam/removem valores a um atributo de múltiplos valores:

use Symfony\Component\Ldap\Ldap;
use Symfony\Component\Ldap\Entry;
// ...

$entry = $ldap->query('...', '...')->execute()[0];

$entityManager = $ldap->getEntryManager();
$entityManager->addAttributeValues($entry, 'telephoneNumber', ['+1.111.222.3333', '+1.222.333.4444']);
$entityManager->removeAttributeValues($entry, 'telephoneNumber', ['+1.111.222.3333', '+1.222.333.4444']);

Manter a query string após redirecionar

No Symfony 4.1, as rotas podem definir (em YAML, XML ou PHP) uma nova opção chamada keepQueryParams. Por padrão, ela é definida como false, mas se você defini-la como true, os parâmetros da query string (se houver) serão adicionados a URL redirecionada:

legacy_search:
path: /search-engine
controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::redirectAction
defaults:
route: search
permanent: true
keepQueryParams: true

Nesse exemplo, se a URL original é /search-engine?q=symfony, a aplicação redireciona para /search?q=symfony

Adicionado suporte para hasser accessors no PropertyInfo

O componente PropertyInfo faz uma introspecção de informações sobre as propriedades da classe usando diferentes fontes de metadados. No Symfony 4.1, uma dessas fontes (a classe ReflectionExtractor) adicionou suporte para métodos hasser.

Isso permitirá, por exemplo, tornar uma propriedade legível definindo métodos como hasChildren() em vez de apenas getChildren().

Tradução de: New in Symfony 4.1: Misc. improvements (part 3)