Select Git revision
FormWithFields.php
FormWithFields.php 4.96 KiB
<?php
namespace WPDesk\Forms\Form;
use Psr\Container\ContainerInterface;
use WPDesk\Forms\ContainerForm;
use WPDesk\Forms\Field;
use WPDesk\Forms\FieldProvider;
use WPDesk\Forms\Form;
use WPDesk\Persistence\ElementNotExistsException;
use WPDesk\Persistence\PersistentContainer;
use WPDesk\View\Renderer\Renderer;
class FormWithFields implements Form, ContainerForm, FieldProvider {
use Field\Traits\HtmlAttributes;
/** @var string Unique form_id. */
protected $form_id = 'form';
/** @var array Updated data. */
private $updated_data;
/** @var Field[] Form fields. */
private $fields;
/**
* FormWithFields constructor.
*
* @param Field[] $fields
* @param string $form_id
*/
public function __construct( array $fields, string $form_id = 'form' ) {
$this->fields = $fields;
$this->form_id = $form_id;
$this->set_action( '' );
$this->set_method( 'POST' );
}
/** Set Form action attribute. */
public function set_action( string $action ): self {
$this->attributes['action'] = $action;
return $this;
}
public function get_action(): string {
return $this->attributes['action'];
}
/** Set Form method attribute ie. GET/POST. */
public function set_method( string $method ): self {
$this->attributes['method'] = $method;
return $this;
}
public function get_method(): string {
return $this->attributes['method'];
}
public function is_submitted(): bool {
return null !== $this->updated_data;
}
/** @return void */
public function add_field( Field $field ) {
$this->fields[] = $field;
}