Laravel v12.4 представляє каст AsHtmlString, який кардинально змінює спосіб роботи розробників з HTML-контентом у моделях Eloquent. Ця функція автоматизує перетворення текстових атрибутів у екземпляри HtmlString, позбавляючи від потреби в ручних конвертаціях.
Багатий контент, збережений у базах даних, зазвичай має відображатися без ескейпування HTML. Хоча клас HtmlString уже використовувався в Laravel для цього, його впровадження вимагало написання кастомних аксесорів або ручного перетворення. Каст AsHtmlString спрощує цей процес:
use Illuminate\Database\Eloquent\Casts\AsHtmlString;
use Illuminate\Database\Eloquent\Model;
class Newsletter extends Model
{
protected function casts(): array
{
return [
'content' => AsHtmlString::class,
];
}
}
Тепер, коли каст застосовано, доступ до атрибута content автоматично повертає екземпляр HtmlString:
$newsletter = Newsletter::find(1);
$newsletter->content; // Екземпляр \Illuminate\Support\HtmlString
Раніше розробникам доводилося обробляти HTML-контент за допомогою аксесорів або ручного перетворення:
// Використання аксесуара
protected function content(): Attribute
{
return Attribute::make(
get: fn (string $value) => str($value)->toHtmlString(),
);
}
// Або ручне перетворення за потреби
$htmlContent = new HtmlString($newsletter->content);
$htmlContent = str($newsletter->content)->toHtmlString();
Цей каст спрощує управління контентом у системах і додатках, що працюють з відформатованим текстом. Наприклад, модель продукту в електронній комерції може зберігати HTML-форматовані описи:
class Product extends Model
{
protected function casts(): array
{
return [
'name' => 'string',
'description' => AsHtmlString::class,
'features' => AsHtmlString::class,
'sku' => 'string', // Звичайний рядок, буде ескейплений
];
}
}
З такою конфігурацією шаблони Blade відображають HTML-контент безпосередньо:
<div class="product">
<h2>{{ $product->name }}</h2> <!-- Буде ескейплено -->
<div class="description">
{{ $product->description }} <!-- Не буде ескейплено -->
</div>
<ul class="features">
{{ $product->features }} <!-- Не буде ескейплено -->
</ul>
</div>
Каст AsHtmlString усуває повторення коду, підвищуючи експресивність моделей та типову безпеку у всіх додатках Laravel
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку