- Added new methods for each inputs ui_...; fixed empty or 0 values checkbox/radio checked handling

This commit is contained in:
Dave Mc Nicoll 2023-05-12 18:58:22 +00:00
parent fd4e30bd42
commit 328a4d282c
2 changed files with 17 additions and 5 deletions

View File

@ -3,10 +3,9 @@
namespace Picea\Ui\Form;
use Picea\Ui\Common\UiElement;
use Picea\Extension\Extension;
use Picea\Extension\ExtensionTrait;
use Picea\Extension\{ Extension, FunctionExtension, ExtensionTrait };
class UiInput extends UiElement implements Extension {
class UiInput extends UiElement implements Extension, FunctionExtension {
use ExtensionTrait;
public string $token = "ui:input";
@ -19,7 +18,7 @@ class UiInput extends UiElement implements Extension {
'tag-type' => "single",
];
protected /* ? mixed */ $value;
protected mixed $value;
protected string $name;
@ -32,6 +31,19 @@ class UiInput extends UiElement implements Extension {
return "<?php echo ( new \\" . static::class . "() )->buildHtml($arguments) ?>";
}
public function exportFunctions(): array
{
if ( null === $type = $this->attributes['type'] ?? null ) {
return [];
}
$key = str_replace('-', '_', 'ui_'. ( $this->attributes['type'] ?? 'text' ));
return [
$key => fn(string $name, mixed $value = null, array $attributes = [], array $options = []) : string => $this->buildHtml($name, $value, $attributes, $options),
];
}
public function buildHtml(string $name, mixed $value = null, array $attributes = [], array $options = []) : string
{
$this->name = $name;

View File

@ -13,7 +13,7 @@ class UiRadio extends UiInput {
protected function objectAttribute() : array
{
if ( ( $this->options['value'] ?? false ) && ( $this->options['value'] === $this->value ) ) {
if ( isset($this->options['value']) && ( $this->options['value'] === $this->value ) ) {
return [
'checked' => "checked"
];