#laravel #laravel-livewire
#laravel #laravel-livewire
Вопрос:
я создал новые простые компоненты для использования в liveWire
, и я пытаюсь использовать этот компонент из одного маршрута, в приведенной ниже простой реализации increment
и decrement
не работает для меня
маршрут:
Route::get('/login',LoginComponent::class);
LoginComponent::class
:
class LoginComponent extends Component
{
public $count = 10;
public function render()
{
return view('livewire.auth.login')->layout('livewire.auth.app');
}
public function increment()
{
$this->count ;
}
public function decrement()
{
$this->count--;
}
}
app.blade.php
:
<!DOCTYPE html>
<html lang="en">
<head>
...
@livewireStyles
</head>
<body>
<div class="page-content">
<div class="content-wrapper">
@yield('content')
</div>
</div>
@livewireScripts
</body>
</html>
и затем login.blade.php
:
<div>
@section('content')
<div class="page-content">
<div class="content-wrapper">
<div class="content d-flex justify-content-center align-items-center">
<div style="text-align: center">
<button wire:click="increment"> </button>
<button wire:click="decrement"> - </button>
<h1>{{ $count }}</h1>
</div>
</div>
</div>
</div>
@endsection
</div>
Ответ №1:
Я бы рекомендовал использовать правильные методы рендеринга.
return view('livewire.auth.login')
->extends('livewire.auth.app')
->section('content');
И удалите @section('content')
из login.blade.php
Проверьте документы по компонентам рендеринга
Комментарии:
1. не могли бы вы уточнить, что произошло? я не понимаю меня в документах
Ответ №2:
Я попробовал более старый стиль @yield / @section Laravel, как описано в документации Livewire, и проблем не возникло.
Ваш app.blade.php кажется, все в порядке.
Но ваш метод визуализации LoginController должен использовать extends():
public function render()
{
return view('livewire.auth.login')->extends('livewire.auth.app');
}
И вы должны удалить @section из своего login.blade.php компонент.