Elenco Eloquente para Strings HTML em Laravel

Laravel Notícias de tecnologia PHP Webdev
Elenco Eloquente para Strings HTML em Laravel

A partir da versão 12.4 , você pode converter automaticamente atributos do Eloquent para uma string HTML usando o AsHtmlString cast. O framework já possui uma HtmlString classe disponível; este cast a agrupa com atributos do Eloquent que você pode usar quando apropriado:

use Illuminate\Database\Eloquent\Casts\AsHtmlString;
 
protected function casts(): array
{
return [
'myAttribute' => AsHtmlString::class,
];
}
 
// Using the cast automatically does this
$model->myAttribute; // \Illuminate\Support\HtmlString

Antes dessa conversão, você precisaria definir sua própria conversão personalizada, definir um acessador ou criar manualmente uma HtmlString instância:

protected function html(): Attribute
{
return Attribute::make(
get: fn (string $value) => str($value)->toHtmlString(),
);
}
 
// Using the html() accessor
$model->html; // HtmlString
 
// Or manually
$myString = new HtmlString($model->myString);
$myString = str($model->myString)->toHtmlString();

Embora este AsHtmlString seja provavelmente um caso de uso restrito, ele permite que você use a string HTML do seu modelo ao renderizar conteúdo dinâmico do seu banco de dados. É claro que você deve considerar seu caso de uso com cuidado, pois instâncias de HtmlString não são escapadas no Blade, por exemplo:

{{-- Warning: not be escaped when rendered in blade templates! --}}
{{ $model->html }}

Pode haver outros casos de uso de nicho em que HtmlString pode ser útil — você saberá quando precisar dele — mas tenha cuidado.

Consulte a documentação de conversão de atributos para obter detalhes sobre como converter os atributos do seu modelo.