180 lines
No EOL
3.6 KiB
PHP
180 lines
No EOL
3.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Ýëåìåíò ôîðìû
|
|
* @package core
|
|
*/
|
|
class TField
|
|
{
|
|
public $name;
|
|
public $label; // Ìåòêà ïîëÿ
|
|
public $value; // Çíà÷åíèå ïîëÿ
|
|
public $type; // Êàæäîìó òèïó ýëåìåíòà ñîîòâåòñòâóåò ìàêðîñ TAL
|
|
public $error_msg = null;
|
|
public $error = false;
|
|
public $require = false;
|
|
|
|
public function __construct ($input)
|
|
{
|
|
$this->deafult = null;
|
|
if (isset($input['validate'])) {
|
|
$this->require = strpos($input['validate'], 'require') !== false;
|
|
}
|
|
// Èíèöèàëèçàöèÿ ñâîéñò îáüåòêà
|
|
foreach (array('label', 'name', 'type') as $name) {
|
|
$this->$name = $input[$name];
|
|
}
|
|
}
|
|
|
|
function setValue($value)
|
|
{
|
|
$this->value = $value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Ïîëå ââîäà Input
|
|
* @package core
|
|
*/
|
|
class TInput extends TField {
|
|
}
|
|
|
|
/**
|
|
* Âûáîð èç îäíîãî ýëåìåíòà
|
|
*/
|
|
class TSelect1 extends TField
|
|
{
|
|
public $options = array ();
|
|
public function __construct ($input) {
|
|
parent::__construct($input);
|
|
$this->options = $input['options'];
|
|
}
|
|
|
|
function setValue($value)
|
|
{
|
|
// Óñòàíîâèòü selected ó options
|
|
$this->value = $value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Ïîëå ñ äàòîé
|
|
* @package core
|
|
*/
|
|
class TDate extends TField
|
|
{
|
|
}
|
|
|
|
/* *
|
|
* Òåêñòîâîå ïîëå
|
|
* @package core
|
|
*/
|
|
class TTextArea extends TField
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Ïîëå äëÿ ââîäà ïàðîëÿ
|
|
* @package core
|
|
*/
|
|
class TSecret extends TField
|
|
{
|
|
}
|
|
|
|
class TUpload extends TField
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Ôîðìà äëÿ ââîäà
|
|
* @package core
|
|
*/
|
|
class TForm
|
|
{
|
|
public $field = array ();
|
|
public $action = "";
|
|
public $method = 'post';
|
|
protected $replace;
|
|
protected $before;
|
|
|
|
public function __construct ()
|
|
{
|
|
$this->constructor = array (
|
|
'input' => 'TInput',
|
|
'date' => 'TDate',
|
|
'textarea' => 'TTextArea',
|
|
'select' => 'TSelect',
|
|
'select1' => 'TSelect1',
|
|
'secret' => 'TSecret',
|
|
'upload' => 'TUpload'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Äîáàâëÿåò îäíî ïîëå ââîäà íà ôîðìó
|
|
*/
|
|
public function addField (array $init)
|
|
{
|
|
assert (isset($init['type']));
|
|
assert (isset($init['name']));
|
|
|
|
$constructor = $this->constructor[$init['type']];
|
|
$el = new $constructor ($init);
|
|
$el->type = $init['type'];
|
|
|
|
$this->field [$init['name']] = $el;
|
|
return $el;
|
|
}
|
|
|
|
/**
|
|
* Äîáàâëÿåò ñïñîê ïîëåé äëÿ ôîðìû
|
|
* @param array $list
|
|
*/
|
|
public function addFieldList (array $list)
|
|
{
|
|
foreach ($list as $init) {
|
|
$this->addField ($init);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Óñòàíàâëèâàåò îøèáêè ïîñëå ïðîâåðêè
|
|
*/
|
|
function setError (Validator $validator)
|
|
{
|
|
foreach ($validator->getErrorMsg() as $name => $error)
|
|
{
|
|
$this->field[$name]->error = true;
|
|
$this->field[$name]->error_msg = $error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Óñòàíàâëèâàåò çíà÷åíèÿ èç ìàñèâà
|
|
*/
|
|
function setValues (Collection $request) {
|
|
foreach ($this->field as $key => $el) {
|
|
$value = $request->getRawData ($this->method, $key);
|
|
$this->field[$key]->setValue($value);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Çàïîëíÿåò ôîðìó äàííûìè èç îáüåêòà
|
|
* @param object $data
|
|
* @param array $schema Ñâÿçü ìåæäó ýëåìåíòàìè ôîðìû è ñâîéñòâàìè îáüåêòà
|
|
*/
|
|
public function fill ($data, array $schema)
|
|
{
|
|
foreach ($schema as $key => $value) {
|
|
$this->field [$value]->setValue($data->$value->getString ());
|
|
}
|
|
}
|
|
|
|
public function set($name, $value)
|
|
{
|
|
$this->field[$name]->setValue($value);
|
|
}
|
|
}
|
|
|
|
?>
|