Метод has
Метод has класса Component проверяет,
существует ли указанное свойство в экземпляре компонента Livewire.
Метод принимает один параметр - строку с именем свойства.
Возвращает логическое значение: true, если свойство определено
и имеет значение, или false в противном случае.
Особенность метода в том, что он не вызывает ошибку при обращении
к несуществующему свойству, а просто возвращает false.
Синтаксис
<?php
$exists = $this->has('propertyName');
?>
Пример
Давайте проверим наличие свойства $num в компоненте:
<?php
namespace AppLivewire;
use LivewireComponent;
class Counter extends Component
{
public $num = 10;
public function checkNum()
{
if ($this->has('num')) {
return 'Property exists';
}
return 'Property does not exist';
}
public function render()
{
return view('livewire.counter');
}
}
?>
<div>
<button wire:click="checkNum">
Check property
</button>
<span>{{ $result }}</span>
</div>
После нажатия на кнопку в свойстве $result окажется строка:
"Property exists"
Пример
Проверим несуществующее свойство $title:
<?php
namespace AppLivewire;
use LivewireComponent;
class Post extends Component
{
public $text = 'abcde';
public function checkTitle()
{
if ($this->has('title')) {
return 'Title exists';
}
return 'Title does not exist';
}
public function render()
{
return view('livewire.post');
}
}
?>
<div>
<button wire:click="checkTitle">
Check title
</button>
<span>{{ $result }}</span>
</div>
Результат выполнения кода:
"Title does not exist"
Пример
Используем has для условного отображения данных
в Blade-шаблоне:
<?php
namespace AppLivewire;
use LivewireComponent;
class UserProfile extends Component
{
public $name = 'John';
public $age = 30;
public function render()
{
return view('livewire.user-profile');
}
}
?>
<div>
@if ($this->has('name'))
<p>Name: {{ $name }}</p>
@endif
@if ($this->has('age'))
<p>Age: {{ $age }}</p>
@endif
@if (!$this->has('email'))
<p>Email field is not set</p>
@endif
</div>
Результат выполнения кода:
<div>
<p>Name: John</p>
<p>Age: 30</p>
<p>Email field is not set</p>
</div>