Skip to content

Commit 07e042d

Browse files
committed
Rename rule and add comments
1 parent 2f70f17 commit 07e042d

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/Resolvers/DataValidationRulesResolver.php

+8-4
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
use Spatie\LaravelData\Support\DataConfig;
1616
use Spatie\LaravelData\Support\DataProperty;
1717
use Spatie\LaravelData\Support\Validation\DataRules;
18+
use Spatie\LaravelData\Support\Validation\EnsurePropertyMorphable;
1819
use Spatie\LaravelData\Support\Validation\PropertyRules;
19-
use Spatie\LaravelData\Support\Validation\RequiresPropertyMorphableClassRule;
2020
use Spatie\LaravelData\Support\Validation\RuleDenormalizer;
2121
use Spatie\LaravelData\Support\Validation\RuleNormalizer;
2222
use Spatie\LaravelData\Support\Validation\ValidationContext;
@@ -75,7 +75,7 @@ public function execute(
7575
);
7676

7777
if ($dataProperty->isForMorph) {
78-
$rules[] = new RequiresPropertyMorphableClassRule($dataClass);
78+
$rules[] = new EnsurePropertyMorphable($dataClass);
7979
}
8080

8181
$dataRules->add($propertyPath, $rules);
@@ -109,14 +109,18 @@ protected function propertyMorphableDataClass(
109109
$pipeline = $this->dataConfig->getResolvedDataPipeline($class);
110110

111111
try {
112-
$properties = Arr::only($pipeline->execute(
112+
// Attempt to cast properties
113+
$properties = $pipeline->execute(
113114
$path->isRoot() ? $fullPayload : Arr::get($fullPayload, $path->get(), []),
114115
$creationContext
115-
), $dataClass->propertyMorphablePropertyNames);
116+
);
116117
} catch (\Throwable $exception) {
117118
return null;
118119
}
119120

121+
// Restrict to only morphable properties
122+
$properties = Arr::only($properties, $dataClass->propertyMorphablePropertyNames);
123+
120124
// Only morph if all properties are present
121125
if (count($properties) !== count($dataClass->propertyMorphablePropertyNames)) {
122126
return null;

src/Support/Validation/RequiresPropertyMorphableClassRule.php src/Support/Validation/EnsurePropertyMorphable.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Spatie\LaravelData\Attributes\Validation\ObjectValidationAttribute;
99
use Spatie\LaravelData\Support\DataClass;
1010

11-
class RequiresPropertyMorphableClassRule extends ObjectValidationAttribute implements ValidationRule
11+
class EnsurePropertyMorphable extends ObjectValidationAttribute implements ValidationRule
1212
{
1313
public function __construct(protected DataClass $dataClass)
1414
{

0 commit comments

Comments
 (0)