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.