1. Go to this page and download the library: Download archtechx/airwire 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/ */
archtechx / airwire example snippets
class CreateUser extends Component
{
#[Wired]
public string $name = '';
#[Wired]
public string $email = '';
#[Wired]
public string $password = '';
#[Wired]
public string $password_confirmation = '';
public function rules()
{
return [
'name' => ['>id, 'name' => $user->name]));
$this->reset();
return $user;
}
}
class CreateTeam extends Component
{
#[Wired]
public string $name; // Shared
public string $owner; // Not shared
public function hydrate()
{
$this->owner = auth()->id();
}
}
public function hydrate()
{
// Executed on each request, before any changes & calls are made
}
public function dehydrate()
{
// Executed when serving a response, before things like validation errors are serialized into array metadata
}
public function updating(string $property, mixed $value): bool
{
return false; // disallow this state change
}
public function updatingFoo(mixed $value): bool
{
return true; // allow this state change
}
public function updated(string $property, mixed $value): void
{
// execute side effects as a result of a state change
}
public function updatedFoo(mixed $value): void
{
// execute side effects as a result of a state change
}
public function changed(array $changes): void
{
// execute side effects $changes has a list of properties that were changed
// i.e. passed validation and updating() hooks
}
public bool $strictValidation = false;
public array $rules = [
'name' => ['
return [ ... ];
}
public function messages()
{
return [ ... ];
}
public function attributes()
{
return [ ... ];
}
// received: ['name' => 'Try Airwire on a new project', 'priority' => 'highest']
public function addTask(Task $task)
{
$task->save();
}
public User $user;
// response: {"name": "John Doe", "email": "[email protected]", ... }
public find(string $id): Response
{
return User::find($id);
}
// same response as the property
#[Wired] #[Encode(method: 'getKey')]
public User $user; // returns '3'
#[Wired] #[Encode(property: 'slug')]
public Post $post; // returns 'introducing-airwire'
#[Wired] #[Encode(function: 'generateHashid')]
public Post $post; // returns the value of generateHashid($post)
#[Wired(default: [])]
public Collection $results;
// Search/Filter component
#[Wired(readonly: true, default: [])]
public Collection $results;
public function mount()
{
return [
'users' => User::all()->toArray(),
]
}
public function mount()
{
return [
'readonly' => [
'users' => User::all()->toArray(),
],
];
}
public function save(User $user): User
{
$this->validate($user->getAttributes());
if ($user->save()) {
$this->metadata('The user was saved with an id of ' . $user->id);
} else {
throw Exception("The user couldn't be created.");
}
}
// Assertions against responses use send()
test('properties are shared only if they have the Wired attribute', function () {
expect(TestComponent::test()
->state(['foo' => 'abc', 'bar' => 'xyz'])
->send()
->data
)->toBe(['bar' => 'xyz']); // foo is not Wired
});
// Assertions against component state use hydrate()
test('properties are shared only if they have the Wired attribute', function () {
expect(TestComponent::test()
->state(['foo' => 'abc', 'bar' => 'xyz'])
->hydrate()->bar
)->toBe('xyz'); // foo is not Wired
});
php artisan airwire:generate
php artisan airwire:component CreateUser
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.