A equipe do Laravel lançou a versão 11.23 esta semana, com as atualizações de código desimpedido do Laracon US 2024, uma vez que defer()
simultaneidade, atributos de contêiner contextuais e muito mais.
#Atualizações do Laracon 2024
Taylor Otwell contribuiu com todos os brindes que ele compartilhou em sua palestra principal na Laracon US 2024, incluindo chaperone()
, defer()
, Cache::flexible()
atributos de contêiner contextuais e muito mais.
A documentação está sendo atualizada; cá estão alguns destaques que você deve conferir para se familiarizar com essas atualizações:
Ver Solicitação de Pull #52710 para detalhes completos sobre tudo adicionado relacionado a Taylor’s.
#Somar regras minRatio e maxRatio à validação de dimensão
Cam Kemshal-Bell adicionou a proporção mínima e máxima ao dimensions
regra de validação:
Você pode usar esses métodos fluentemente, usando minRatio()
, maxRatio()
e ratioBetween()
:
use IlluminateValidationRule;
//
// Using minRatio and maxRatio fluent methods
//
Rule::dimensions()
Sua visita nos ajuda a continuar oferecendo o melhor para você! ->minRatio(1 / 2)
->maxRatio(1 Sua visita nos ajuda a continuar oferecendo o melhor para você! #D73A49;">/ 3);
// dimensions:min_ratio=0.5,max_ratio=0.33333333333333
//
// Equivalent using ratioBetween()
//
Rule::dimensions()->ratioBetween(min: 1 / 2, max: 1 / 3);
// dimensions:min_ratio=0.5,max_ratio=0.33333333333333
Você também pode usar o estilo string dimensions
regra com esta atualização também:
use IlluminateSupportFacadesValidator;
Validator::make($request->all(), [
'min_12' => 'dimensions:min_ratio=1/2',
'square' => 'dimensions:ratio=1',
'max_25' => 'dimensions:max_ratio=2/5',
'min_max' => 'dimensions:min_ratio=1/4,max_ratio=2/5',
]);
#Suporte Enum com suporte em métodos Gate e Authorize Middleware
Ele é Tarifas contribuiu com duas solicitações de pull que continuam a somar suporte a enum com suporte. Esta versão inclui atualizações para o Gate
métodos e Authorize
middleware.
Cá estão alguns exemplos de uso de Enums com Gate
métodos:
enum Abilities: string {
case VIEW_DASHBOARD = 'view-dashboard';
case EDIT = 'edit';
case UPDATE = 'update';
}
// Before
Gate::define('view-dashboard', function (User $user) {
return $user->isAdmin;
});
Gate::authorize('view-dashboard');
Gate::inspect('view-dashboard');
Gate::check('view-dashboard');
Gate::any(['edit', 'update], $post);
Gate::none(['edit', 'update]], $post);
Gate::allows('update', $post);
Gate::denies('update', $post);
// After
Gate::define(Abilities::VIEW_DASHBOARD, function (User $user) {
return $user->isAdmin;
});
Gate::authorize(Abilities::VIEW_DASHBOARD);
Gate::inspect(Abilities::VIEW_DASHBOARD);
Gate::check(Abilities::VIEW_DASHBOARD);
Gate::any([Abilities::EDIT, Abilities::UPDATE], $post);
Gate::none([Abilities::EDIT, Abilities::UPDATE], $post);
Gate::allows(Abilities::UPDATE, $post);
Gate::denies(Abilities::UPDATE, $post);
Cá está um exemplo do Authorize
suporte de middleware para enumerações suportadas:
Route::get('/dashboard', [AdminDashboardController::class, 'index'])
->middleware(
Authorize::using(Abilities::VIEW_DASHBOARD)
)
->name(AdminRoutes::DASHBOARD);
#Pular Middleware para Trabalhos de Fileira
Kennedy Tedesco contribuiu com um middleware Skip para pular um trabalho com base em uma quesito. Leste middleware tem três métodos construtores estáticos que você pode usar, incluindo when()
, unless()
. O trabalho é ignorado com base no resultado da quesito usada:
class MyJob implements ShouldQueue
{
Sua visita nos ajuda a continuar oferecendo o melhor para você! style="color: #D73A49;">use Queueable;
public function handle(): void
{
// TODO
}
public function middleware(): array
{
return [
Skip::when($someCondition), // Skip when `true`
Skip::unless($someCondition), // Skip when `false`
Skip::when(function(): bool {
if ($someCondition) {
return true;
}
return false;
}),
];
}
}
#Coleção Magníloquo findOrFail()
Método
Steve Bauman contribuiu com um findOrFail()
método em coleções Eloquent que adiciona uma maneira de encontrar um padrão em uma coleção já preenchida:
$users = User::get(); // [User(id: 1), User(id: 2)]
$users->findOrFail(1); // User
$user->findOrFail([]); // []
$user->findOrFail([1, 2]); // [User, User]
$user->findOrFail(3); // ModelNotFoundException: 'No query results for model [User] 3'
$user->findOrFail([1, 2, 3]); // ModelNotFoundException: 'No query results for model [User] 3'
#Notas de lançamento
Você pode ver a lista completa de novos recursos e atualizações inferior e a diferença entre 11.22.0 e 11.23.0 no GitHub. As notas de versão a seguir são diretamente do registro de alterações:
#v11.23.0
Tags:
Crédito: Manadeira Original