• Час читання ~1 хв
  • 04.08.2023

Команда Laravel нещодавно випустила Volt, який дозволяє створювати повноцінні компоненти Livewire прямо в поданні Blade. Спочатку він був випущений з функціональним синтаксисом. Ви можете імпортувати функції Volt і обгорнути свою функціональність Livewire для стану, обчислювальних властивостей, дій тощо. в тих.

Наприклад, простий компонент для створення повідомлення з використанням функціонального синтаксису:

<?php
use App\Models\Post;
use function Livewire\Volt\{state};
use function Livewire\Volt\{rules};

state([
    'title' => '',
    'content' => '',
]);
rules([
    'title' => ['required', 'max:250'],
    'content' => ['required', 'max:10000'],
]);
$save = function () {
    $this->validate();

    Post::create([
        'title' => $this->title,
        'content' => $this->content,
    ]);
    return redirect('/posts');
}
?>
<form wire:submit="save">
    <div>
        <label>Title</label>
        <input wire:model="title" type="text" />
    </div>
    <div>
        <label>Content</label>
        <textarea wire:model="content"></textarea>
    </div>

    <button>Save</button>
</form>

На сьогоднішній день команда Laravel випустила v1.0-beta.3, яка вводить новий синтаксис на основі класу для компонентів Volt. Це дозволяє вам писати компоненти Livewire, використовуючи більш традиційний синтаксис, до якого ви звикли, але все ще все всередині ваших файлів Blade.

Наприклад, те ж саме створити компонент post, написаний за допомогою нового синтаксису на основі класу:

<?php
use App\Models\Post;
use Livewire\Volt\Component;
use Livewire\Attributes\Rule;

new class extends Component
{
    #[Rule(['required', 'max:250'])]
    public $title = '';

    #[Rule(['required', 'max:10000'])]
    public $content = '';

    public function save() {
        $this->validate();

        Post::create([
            'title' => $this->title,
            'content' => $this->content,
        ]);
        return redirect('/posts');
    }
}
?>
<form wire:submit="save">
    <div>
        <label>Title</label>
        <input wire:model="title" type="text" />
    </div>
    <div>
        <label>Content</label>
        <textarea wire:model="content"></textarea>
    </div>

    <button>Save</button>
</form>

What you think? Ви віддаєте перевагу функціональному синтаксису або більш традиційному синтаксису на основі класів? Особисто мені трохи більше подобається синтаксис на основі класу, але чудово бачити, як команда Laravel надає людям кілька способів створення функціональності!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297