Select Git revision
BasicField.php
-
Bartek Jaskulski authoredBartek Jaskulski authored
BasicField.php 5.85 KiB
<?php
namespace WPDesk\Forms\Field;
use BadMethodCallException;
use WPDesk\Forms\Field;
use WPDesk\Forms\Sanitizer;
use WPDesk\Forms\Sanitizer\NoSanitize;
use WPDesk\Forms\Serializer;
use WPDesk\Forms\Validator;
use WPDesk\Forms\Validator\ChainValidator;
use WPDesk\Forms\Validator\RequiredValidator;
/**
* Base class for fields. Is responsible for settings all required field values and provides standard implementation for
* the field interface.
*/
abstract class BasicField implements Field {
use Field\Traits\HtmlAttributes;
const DEFAULT_PRIORITY = 10;
/** @var array{default_value: string, possible_values?: string[], sublabel?: string, priority: int, label: string, description: string, description_tip: string, data: array<string|int>} */
protected $meta = [
'priority' => self::DEFAULT_PRIORITY,
'default_value' => '',
'label' => '',
'description' => '',
'description_tip' => '',
'data' => [],
];
public function should_override_form_template(): bool {
return false;
}
public function get_type(): string {
return 'text';
}
public function get_validator(): Validator {
$chain = new ChainValidator();
if ( $this->is_required() ) {
$chain->attach( new RequiredValidator() );
}
return $chain;
}
public function get_sanitizer(): Sanitizer {
return new NoSanitize();
}
public function has_serializer(): bool {
return false;
}
public function get_serializer(): Serializer {
throw new BadMethodCallException( 'You must define your serializer in a child class.' );
}
final public function get_name(): string {
return $this->attributes['name'] ?? '';
}
final public function get_label(): string {
return $this->meta['label'] ?? '';
}