Skip to content

Commit 1d7ccf5

Browse files
authored
Merge pull request #7 from vint47/master
Skip empty string in form values; Add element datetime;
2 parents b662aff + b02cd5c commit 1d7ccf5

File tree

3 files changed

+74
-8
lines changed

3 files changed

+74
-8
lines changed

src/Form.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,20 @@ public function addElementText($name, $validators = '')
134134
return $this->elements[$name];
135135
}
136136

137+
/**
138+
* @param $name
139+
* @param string $validators
140+
* @return \Merkeleon\Form\Form\Element\DateTime
141+
*/
142+
public function addElementDateTime($name, $validators = '')
143+
{
144+
$element = new Element\DateTime($name, $validators);
145+
$element->setTheme($this->theme);
146+
147+
$this->elements[$name] = $element;
148+
return $this->elements[$name];
149+
}
150+
137151
/**
138152
* @param $name
139153
* @param string $validators
@@ -375,12 +389,15 @@ public function errors()
375389
return $this->errors;
376390
}
377391

378-
public function values()
392+
public function values($skipEmptyString = false)
379393
{
380394
$data = [];
381395
foreach ($this->elements as $name => $element) {
382396
if(!$element->isIgnored()) {
383-
array_set($data, $name, $element->value());
397+
$value = $element->value();
398+
if (!$skipEmptyString || $skipEmptyString && $value !== '') {
399+
array_set($data, $name, $value);
400+
}
384401
}
385402
}
386403

src/Form/Element/Date.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ public function value()
1919
if ($this->value === '') {
2020
$value = null;
2121
} else {
22-
$value = Carbon::parse($this->value, current_timezone())
23-
->setTimezone('UTC');
22+
$value = Carbon::parse($this->value);
2423
}
2524

2625
return $value;
@@ -30,17 +29,15 @@ public function setValue($value, $force = false)
3029
{
3130
if ($force || !$this->hasOldValue)
3231
{
33-
$this->value = Carbon::parse($value, 'UTC')
34-
->setTimezone(current_timezone());
32+
$this->value = Carbon::parse($value);
3533
}
3634

3735
return $this;
3836
}
3937

40-
4138
public function view()
4239
{
43-
$this->addAttributes(['data-toggle' => 'datetimepicker']);
40+
$this->addAttributes(['data-toggle' => 'datepicker']);
4441

4542
return view('form::' . $this->theme . '.element.text', [
4643
'name' => $this->name,

src/Form/Element/DateTime.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
namespace Merkeleon\Form\Form\Element;
4+
5+
use Carbon\Carbon;
6+
use Merkeleon\Form\Form\Element;
7+
8+
class DateTime extends Element
9+
{
10+
11+
public function value()
12+
{
13+
if ($this->value === '') {
14+
$value = null;
15+
} else {
16+
$value = Carbon::parse($this->value, current_timezone())
17+
->setTimezone('UTC');
18+
}
19+
20+
return $value;
21+
}
22+
23+
public function setValue($value, $force = false)
24+
{
25+
if ($force || !$this->hasOldValue)
26+
{
27+
$this->value = Carbon::parse($value, 'UTC')
28+
->setTimezone(current_timezone());
29+
}
30+
31+
return $this;
32+
}
33+
34+
35+
public function view()
36+
{
37+
$this->addAttributes(['data-toggle' => 'datetimepicker']);
38+
39+
return view('form::' . $this->theme . '.element.text', [
40+
'name' => $this->name,
41+
'elementName' => $this->elementName,
42+
'error' => $this->error,
43+
'label' => $this->label,
44+
'value' => $this->value,
45+
'placeholder' => $this->placeholder,
46+
'postfix' => $this->postfix,
47+
'class' => $this->class,
48+
'attributes' => $this->attributes
49+
]);
50+
}
51+
52+
}

0 commit comments

Comments
 (0)