playing with extensible fields

This commit is contained in:
2024-10-11 16:04:44 +03:00
parent dfe4576725
commit b19a84b6ba
32 changed files with 675 additions and 109 deletions
+35
View File
@@ -0,0 +1,35 @@
<?php
namespace Lucent\Field\File;
use Lucent\Field\FieldData;
class Data extends FieldData
{
public function __construct(
public string $name,
public string $label,
public string $mime = "",
public string $help = "",
public ?int $min = null,
public ?int $max = null,
public array $collections = [],
public string $group = "",
)
{
}
public static function fromArray(array $data): self
{
return new self(
name: data_get($data, 'name'),
label: data_get($data, 'label'),
mime: data_get($data, 'mime',""),
help: data_get($data, 'help', ""),
min: data_get($data, 'min'),
max: data_get($data, 'max'),
collections: data_get($data, 'collections',[]),
group: data_get($data, 'group', ""),
);
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace Lucent\Field\File;
use Lucent\Field\Field;
use Lucent\Field\FieldInfo;
use Lucent\Record\RecordData;
use Lucent\Schema\FieldType;
use Lucent\Schema\Nullable;
class File extends Field
{
public FieldInfo $info;
public Data $data;
public function __construct()
{
$this->info = new FieldInfo("file", "File", FieldType::FILE);
}
public function setData(array $data): void
{
$this->data = Data::fromArray($data);
}
public function format(RecordData $input, RecordData $output): RecordData
{
return $output;
}
public function renderForm(): string
{
return view('lucent::new.edit.fields.file', ["info" => $this->info, "data" => $this->data])->render();;
}
}