Skip to content

Commit 03a1904

Browse files
committed
Fix the FieldtypeDatetime bug.
1 parent 9c72c12 commit 03a1904

File tree

3 files changed

+55
-16
lines changed

3 files changed

+55
-16
lines changed

src/Field/Mutation/CreateTemplatedPage.php

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,18 +112,34 @@ public function resolve($value, array $args, ResolveInfo $info)
112112
// set the values from client
113113
unset($values['parent']);
114114
unset($values['name']);
115+
116+
// update the values from client
115117
foreach ($values as $fieldName => $value) {
116118
$field = $fields->get($fieldName);
119+
120+
// ignore if field cannot be found
117121
if (!$field instanceof Field) continue;
118-
if ($field->type->className() === 'FieldtypeMapMarker') {
119-
$p->$fieldName->lat = $value['lat'];
120-
$p->$fieldName->lng = $value['lng'];
121-
$p->$fieldName->address = $value['address'];
122-
$p->$fieldName->zoom = $value['zoom'];
123-
continue;
122+
123+
switch ($field->type->className()) {
124+
case 'FieldtypeMapMarker':
125+
$p->$fieldName->lat = $value['lat'];
126+
$p->$fieldName->lng = $value['lng'];
127+
$p->$fieldName->address = $value['address'];
128+
$p->$fieldName->zoom = $value['zoom'];
129+
break;
130+
131+
case 'FieldtypePage':
132+
$p->$fieldName = implode('|', $value);
133+
break;
134+
135+
case 'FieldtypeDatetime':
136+
$p->$fieldName = $value->format('Y-m-d H:i:s');
137+
break;
138+
139+
default:
140+
$p->$fieldName = $value;
141+
break;
124142
}
125-
if ($field->type->className() === 'FieldtypePage') $value = implode('|', $value);
126-
$p->$fieldName = $value;
127143
}
128144

129145
// save the page to db

src/Field/Mutation/UpdateTemplatedPage.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,16 +124,30 @@ public function resolve($value, array $args, ResolveInfo $info)
124124
// update the values from client
125125
foreach ($values as $fieldName => $value) {
126126
$field = $fields->get($fieldName);
127+
128+
// ignore if field cannot be found
127129
if (!$field instanceof Field) continue;
128-
if ($field->type->className() === 'FieldtypeMapMarker') {
129-
$p->$fieldName->lat = $value['lat'];
130-
$p->$fieldName->lng = $value['lng'];
131-
$p->$fieldName->address = $value['address'];
132-
$p->$fieldName->zoom = $value['zoom'];
133-
continue;
130+
131+
switch ($field->type->className()) {
132+
case 'FieldtypeMapMarker':
133+
$p->$fieldName->lat = $value['lat'];
134+
$p->$fieldName->lng = $value['lng'];
135+
$p->$fieldName->address = $value['address'];
136+
$p->$fieldName->zoom = $value['zoom'];
137+
break;
138+
139+
case 'FieldtypePage':
140+
$p->$fieldName = implode('|', $value);
141+
break;
142+
143+
case 'FieldtypeDatetime':
144+
$p->$fieldName = $value->format('Y-m-d H:i:s');
145+
break;
146+
147+
default:
148+
$p->$fieldName = $value;
149+
break;
134150
}
135-
if ($field->type->className() === 'FieldtypePage') $value = implode('|', $value);
136-
$p->$fieldName = $value;
137151
}
138152

139153
// save the page to db

src/Field/Page/Fieldtype/FieldtypeDatetime.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace ProcessWire\GraphQL\Field\Page\Fieldtype;
44

55
use Youshido\GraphQL\Type\Scalar\DateTimeType;
6+
use Youshido\GraphQL\Execution\ResolveInfo;
67
use ProcessWire\GraphQL\Field\Page\Fieldtype\AbstractFieldtype;
78

89
class FieldtypeDatetime extends AbstractFieldtype {
@@ -12,4 +13,12 @@ public function getDefaultType()
1213
return new DatetimeType();
1314
}
1415

16+
public function resolve($value, array $args, ResolveInfo $info)
17+
{
18+
$fieldName = $this->field->name;
19+
$result = $value->$fieldName;
20+
if (!$result) return null;
21+
return date('Y-m-d H:i:s', $result);
22+
}
23+
1524
}

0 commit comments

Comments
 (0)