%PDF- %PDF-
| Direktori : /www/loslex_o/demo/vendor/livewire/livewire/src/Features/SupportFormObjects/ |
| Current File : /www/loslex_o/demo/vendor/livewire/livewire/src/Features/SupportFormObjects/FormObjectSynth.php |
<?php
namespace Livewire\Features\SupportFormObjects;
use Livewire\Drawer\Utils;
use Livewire\Mechanisms\HandleComponents\Synthesizers\Synth;
use Livewire\Features\SupportAttributes\AttributeCollection;
use function Livewire\wrap;
class FormObjectSynth extends Synth {
public static $key = 'form';
static function match($target)
{
return $target instanceof Form;
}
function dehydrate($target, $dehydrateChild)
{
$data = $target->toArray();
foreach ($data as $key => $child) {
$data[$key] = $dehydrateChild($key, $child);
}
return [$data, ['class' => get_class($target)]];
}
function hydrate($data, $meta, $hydrateChild)
{
$form = new $meta['class']($this->context->component, $this->path);
$callBootMethod = static::bootFormObject($this->context->component, $form, $this->path);
foreach ($data as $key => $child) {
if ($child === null && Utils::propertyIsTypedAndUninitialized($form, $key)) {
continue;
}
$form->$key = $hydrateChild($key, $child);
}
$callBootMethod();
return $form;
}
function set(&$target, $key, $value)
{
if ($value === null && Utils::propertyIsTyped($target, $key)) {
unset($target->$key);
} else {
$target->$key = $value;
}
}
public static function bootFormObject($component, $form, $path)
{
$component->mergeOutsideAttributes(
AttributeCollection::fromComponent($component, $form, $path . '.')
);
return function () use ($form) {
wrap($form)->boot();
};
}
}