PHP code example of capevace / livewire-optimistic-ui
1. Go to this page and download the library: Download capevace/livewire-optimistic-ui library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
capevace / livewire-optimistic-ui example snippets
use Capevace\OptimisticUI\WithOptimisticUI;
use Capevace\OptimisticUI\Optimistic;
/**
* @property-read Collection $todos
*/
class OptimisticPage extends Component
{
use WithOptimisticUI;
#[Optimistic(crud: 'create', model: Task::class, injectOptimisticId: true)]
public function addTask(string $id, string $text): void
{
if (!uuid_is_valid($id) || Task::find($id)) {
return;
}
$task = new Task([
'text' => $text,
]);
$task->id = $id;
$task->save();
}
#[Optimistic(crud: 'delete', model: Task::class)]
public function deleteTask(string $id): void
{
Task::find($id)?->delete();
}
#[Optimistic(crud: 'update', model: Task::class)]
public function editTask(string $id, string $text): void
{
Task::find($id)?->update([
'text' => $text,
]);
}
#[Computed]
public function todos(): Collection
{
return Task::all();
}
public function render(): \Illuminate\View\View
{
return view("messages", [
'todos' => $this->todos,
]);
}
}
use Capevace\OptimisticUI\Optimistic;
#[Optimistic(
fn: "update(params[0], { message: params[1] })"
)]
public function changeMessage(string $id, string $message): void
{
Message::find($id)->update([
'message' => $message,
]);
}
#[Optimistic(
fn: "create({ text: params[0] })"
injectOptimisticId: true
)]
public function addTask(string $id, string $text): void
{
if (!uuid_is_valid($id) || Task::find($id)) {
return;
}
$task = new Task([
'text' => $text,
]);
$task->id = $id;
$task->save();
}
#[Optimistic(crud: 'create', model: Task::class)]
public function addTask(string $id, string $text): void
{
if (!uuid_is_valid($id) || Task::find($id)) {
return;
}
$task = new Task([
'text' => $text,
]);
$task->id = $id;
$task->save();
}
#[Optimistic(crud: 'delete', model: Task::class)]
public function deleteTask(string $id): void
{
Task::find($id)?->delete();
}
#[Optimistic(crud: 'update', model: Task::class)]
public function editTask(string $id, string $text): void
{
Task::find($id)?->update([
'text' => $text,
]);
}
html
<form
@submit.prevent="
$optimistic.addTask(text);
text = '';
"
>
<input x-model="text" />
</form>
<!-- OR -->
@foreach($todos as $task)
<form
x-data="{ text: $item?.text ?? @js($task['text']) }"
@submit.prevent="$optimistic.editTask('{{ $task['id'] }}', text)"
>
<input x-model="text" />
</form>
@endforeach
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.