Защищённое свойство в Livewire
Пусть у поста есть код, который нельзя показывать в разметке и нельзя отдавать браузеру. Если положить его в публичное свойство, оно попадёт в ответ и станет доступно снаружи.
Защищённое свойство PHP остаётся на сервере: Livewire не отправляет его клиенту и не принимает обратно из запроса. В шаблон можно вывести другое публичное поле, куда метод запишет лишь итог, а не сам секрет.
Давайте создадим компонент
PostCode:
php artisan make:livewire PostCode --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/code', function () {
return view('posts-code');
});
?>
<x-layout>
<livewire:post-code />
</x-layout>
Давайте заведём защищённое поле с кодом и публичную заметку для экрана:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostCode extends Component
{
protected $code = 'secret';
public $note = '';
public function reveal()
{
$this->note = 'Ready';
}
public function render()
{
return view('livewire.post-code');
}
}
?>
Давайте поставим кнопку и выведем заметку в шаблоне:
<div>
<button wire:click="reveal">
Reveal
</button>
<div>{{ $note }}</div>
</div>
Создайте компонент EmployeeCode.
Секрет работника не попадает
в разметку, а кнопка может
показать только результат,
который от него зависит.