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

Метод directive

Метод directive класса Livewire предназначен для динамической регистрации пользовательских директив в Livewire. Он принимает два параметра: имя директивы и коллбэк-функцию, которая определяет поведение директивы. Коллбэк получает выражение, переданное директиве, и должен возвращать строку с PHP-кодом для исполнения. Этот метод позволяет расширять синтаксис Livewire, создавая собственные директивы для повторяющихся задач.

Синтаксис

<?php use Livewire\Livewire; Livewire::directive('directiveName', function ($expression) { return '<?php echo ' . $expression . '; ?>'; }); ?>

Пример

Давайте зарегистрируем простую директиву @greet, которая приветствует пользователя:

<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Livewire\Livewire; class LivewireServiceProvider extends ServiceProvider { public function boot() { Livewire::directive('greet', function ($expression) { return "<?php echo 'Hello, ' . {$expression}; ?>"; }); } } ?>
<div> <p>@greet('John')</p> <p>@greet($userName)</p> </div>

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

<p>Hello, John</p> <p>Hello, Alex</p>

Пример

Создадим директиву @upper, преобразующую текст в верхний регистр:

<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Livewire\Livewire; class LivewireServiceProvider extends ServiceProvider { public function boot() { Livewire::directive('upper', function ($expression) { return "<?php echo mb_strtoupper({$expression}); ?>"; }); } } ?>
<div> <p>Original: {{ $text }}</p> <p>Uppercase: @upper($text)</p> </div>
<?php namespace App\Livewire; use Livewire\Component; class Text extends Component { public $text = 'Livewire'; public function render() { return view('livewire.text'); } } ?>

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

<p>Original: Livewire</p> <p>Uppercase: LIVEWIRE</p>

Пример

Зарегистрируем директиву @currency для форматирования чисел как валюты:

<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Livewire\Livewire; class LivewireServiceProvider extends ServiceProvider { public function boot() { Livewire::directive('currency', function ($expression) { return "<?php echo '$' . number_format({$expression}, 2); ?>"; }); } } ?>
<div> <p>Price: @currency($price)</p> <p>Total: @currency($total)</p> </div>
<?php namespace App\Livewire; use Livewire\Component; class Price extends Component { public $price = 99.95; public $total = 299.50; public function render() { return view('livewire.price'); } } ?>

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

<p>Price: $99.95</p> <p>Total: $299.50</p>

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

  • класс Livewire,
    главный класс для работы с Livewire
  • метод component,
    который регистрирует новый компонент Livewire
  • метод hook,
    который регистрирует глобальные хуки для компонентов
  • метод intercept,
    который перехватывает и модифицирует действия Livewire
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить