РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
111 of 274 menu

Поле attributes

Поле attributes класса Component предоставляет доступ к коллекции атрибутов, которые будут применены к корневому элементу шаблона компонента. Это поле позволяет динамически управлять атрибутами напрямую из PHP-кода.

Оно доступно в любом методе компонента и может быть использовано для добавления, удаления или изменения атрибутов перед рендерингом.

Синтаксис

Обращение к полю происходит через $this->attributes. Для добавления атрибута используется метод merge:

<?php $this->attributes->merge(['class' => 'active']); ?>

Для получения значения атрибута используется метод get:

<?php $class = $this->attributes->get('class'); ?>

Пример

Давайте добавим динамический класс к корневому элементу компонента на основе значения свойства $isActive:

<?php namespace AppLivewire; use LivewireComponent; class Button extends Component { public $isActive = true; public function toggle() { $this->isActive = !$this->isActive; if ($this->isActive) { $this->attributes->merge(['class' => 'active']); } else { $this->attributes->merge(['class' => 'inactive']); } } public function render() { if ($this->isActive) { $this->attributes->merge(['class' => 'active']); } else { $this->attributes->merge(['class' => 'inactive']); } return view('livewire.button'); } } ?>
<div> <button wire:click="toggle"> Toggle </button> <div {{ $attributes }}> Status: {{ $isActive ? 'Active' : 'Inactive' }} </div> </div>

После первого клика на кнопку:

<div> <button> Toggle </button> <div class="inactive"> Status: Inactive </div> </div>

Пример

Давайте добавим несколько атрибутов одновременно с помощью массива:

<?php namespace AppLivewire; use LivewireComponent; class Card extends Component { public $type = 'primary'; public function setType($type) { $this->type = $type; $this->attributes->merge([ 'class' => 'card card-' . $type, 'data-type' => $type, 'id' => 'card-' . $type, ]); } public function render() { $this->attributes->merge([ 'class' => 'card card-' . $this->type, 'data-type' => $this->type, 'id' => 'card-' . $this->type, ]); return view('livewire.card'); } } ?>
<div> <button wire:click="setType('secondary')"> Set Secondary </button> <div {{ $attributes }}> Card content </div> </div>

Результат выполнения кода после клика:

<div> <button> Set Secondary </button> <div class="card card-secondary" data-type="secondary" id="card-secondary"> Card content </div> </div>

Смотрите также

  • поле id,
    которое определяет уникальный идентификатор компонента
  • поле slot,
    которое управляет содержимым слотов компонента
  • поле attributes,
    которое отвечает за передачу HTML-атрибутов корневому элементу
  • метод render,
    который отрисовывает шаблон компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить