Команда livewire:convert
Команда livewire:convert предназначена для обратного преобразования
компонентов Livewire в обычные контроллеры Laravel.
Это может понадобиться при отказе от использования Livewire
или при переносе логики в стандартную архитектуру MVC.
Команда принимает имя класса компонента и автоматически
создает контроллер с соответствующими методами.
Синтаксис
php artisan livewire:convert ComponentName
Где ComponentName - имя компонента Livewire,
который требуется преобразовать.
Пример
Допустим, у нас есть компонент Livewire с именем Counter,
который хранит состояние счета и методы для его изменения.
Выполним преобразование этого компонента:
php artisan livewire:convert Counter
В результате будет создан контроллер CounterController
в директории app/Http/Controllers.
Исходные файлы компонента Livewire при этом не удаляются.
Пример
Рассмотрим компонент Livewire Counter до преобразования:
<?php
namespace AppLivewire;
use LivewireComponent;
class Counter extends Component
{
public $num = 0;
public function inc()
{
$this->num++;
}
public function dec()
{
$this->num--;
}
public function render()
{
return view('livewire.counter');
}
}
?>
<div>
<button wire:click="dec">-</button>
<span>{{ $num }}</span>
<button wire:click="inc">+</button>
</div>
После запуска команды преобразования будет создан контроллер:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class CounterController extends Controller
{
public function index()
{
$num = session('num', 0);
return view('counter', ['num' => $num]);
}
public function inc()
{
session(['num' => session('num', 0) + 1]);
return redirect()->route('counter.index');
}
public function dec()
{
session(['num' => session('num', 0) - 1]);
return redirect()->route('counter.index');
}
}
?>
А шаблон counter.blade.php будет адаптирован для работы с контроллером:
<div>
<form action="{{ route('counter.dec') }}" method="POST">
@csrf
<button type="submit">-</button>
</form>
<span>{{ $num }}</span>
<form action="{{ route('counter.inc') }}" method="POST">
@csrf
<button type="submit">+</button>
</form>
</div>
Таким образом, команда преобразует реактивный компонент в стандартный контроллер с маршрутами и сессионным хранилищем.
Смотрите также
-
команду
livewire:move,
которая перемещает компонент в другое пространство имен -
команду
livewire:copy,
которая копирует существующий компонент -
команду
livewire:delete,
которая удаляет компонент и его шаблон -
команду
make:livewire,
которая создает новый компонент Livewire