Skip to content

Commit 72d2169

Browse files
alexwenzelwajdijurrylonnylot
authored
integrating various pull requests with fixes (#46)
* added nvmrc file * integrating various pull requests (#45) * Fix bug in nested forms, as discussed in issue #39 (#40) * Fix dependencies and remove debugging * Fix formUniqueId in nested forms * Revert "Fix bug in nested forms, as discussed in issue #39 (#40)" (#44) This reverts commit a2bcc77. * Handle BackedEnum (#34) * Handle BackedEnum * Use ->value instead of tryFrom * Get Correct Rules (#32) Instead of trying to access the specific rule property and check if it is callable call the correct rule method instead so the individual field has a chance to handle the logic. fixes #17 --------- Co-authored-by: Wajdi Jurry <creations.forum@gmail.com> Co-authored-by: Lonny Kapelushnik <lonny@lonnylot.com> --------- Co-authored-by: Wajdi Jurry <creations.forum@gmail.com> Co-authored-by: Lonny Kapelushnik <lonny@lonnylot.com>
1 parent 7fba392 commit 72d2169

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
lts/fermium

src/DependencyContainer.php

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Aqjw\MedialibraryField\Fields\Medialibrary;
66
use Aqjw\MedialibraryField\Fields\Support\MediaCollectionRules;
7+
use BackedEnum;
78
use Illuminate\Support\Arr;
89
use Laravel\Nova\Fields\Field;
910
use Laravel\Nova\Http\Requests\NovaRequest;
@@ -334,9 +335,14 @@ public function areDependenciesSatisfied(NovaRequest $request)
334335
if (array_key_exists('value', $dependency)
335336
&& !array_key_exists('in', $dependency)
336337
&& !array_key_exists('notin', $dependency)
337-
&& !array_key_exists('nullOrZero', $dependency)
338-
&& $dependency['value'] == $request->get($dependency['property'])) {
339-
$satisfiedCounts++;
338+
&& !array_key_exists('nullOrZero', $dependency)) {
339+
if ($dependency['value'] instanceof BackedEnum) {
340+
if ($dependency['value']->value == $request->get($dependency['property'])) {
341+
$satisfiedCounts++;
342+
}
343+
} elseif ($dependency['value'] == $request->get($dependency['property'])) {
344+
$satisfiedCounts++;
345+
}
340346
}
341347
}
342348

@@ -347,10 +353,10 @@ public function areDependenciesSatisfied(NovaRequest $request)
347353
* Get a rule set based on field property name
348354
*
349355
* @param NovaRequest $request
350-
* @param string $propertyName
356+
* @param string $methodName
351357
* @return array
352358
*/
353-
protected function getSituationalRulesSet(NovaRequest $request, string $propertyName = 'rules')
359+
protected function getSituationalRulesSet(NovaRequest $request, string $methodName = 'getRules')
354360
{
355361
$fieldsRules = [$this->attribute => []];
356362

@@ -366,22 +372,18 @@ protected function getSituationalRulesSet(NovaRequest $request, string $property
366372
/** @var Field $field */
367373
foreach ($this->meta['fields'] as $field) {
368374
// if field is DependencyContainer, then add rules from dependant fields
369-
if ($field instanceof DependencyContainer && $propertyName === "rules") {
370-
$fieldsRules[Str::random()] = $field->getSituationalRulesSet($request, $propertyName);
375+
if ($field instanceof DependencyContainer && $methodName === "getRules") {
376+
$fieldsRules[Str::random()] = $field->getSituationalRulesSet($request, $methodName);
371377
} elseif ($field instanceof Medialibrary) {
372-
$rules = is_callable($field->{$propertyName})
373-
? call_user_func($field->{$propertyName}, $request)
374-
: $field->{$propertyName};
378+
$rules = $field->{$methodName}($request);
375379

376380
$fieldsRules[$field->attribute] = MediaCollectionRules::make(
377381
$rules,
378382
$request,
379383
$field,
380384
);
381385
} else {
382-
$fieldsRules[$field->attribute] = is_callable($field->{$propertyName})
383-
? call_user_func($field->{$propertyName}, $request)
384-
: $field->{$propertyName};
386+
$fieldsRules[$field->attribute] = $field->{$methodName}($request);
385387
}
386388
}
387389

@@ -429,7 +431,7 @@ public function getRules(NovaRequest $request)
429431
*/
430432
public function getCreationRules(NovaRequest $request)
431433
{
432-
$fieldsRules = $this->getSituationalRulesSet($request, 'creationRules');
434+
$fieldsRules = $this->getSituationalRulesSet($request, 'getCreationRules');
433435

434436
return array_merge_recursive(
435437
$this->getRules($request),
@@ -445,7 +447,7 @@ public function getCreationRules(NovaRequest $request)
445447
*/
446448
public function getUpdateRules(NovaRequest $request)
447449
{
448-
$fieldsRules = $this->getSituationalRulesSet($request, 'updateRules');
450+
$fieldsRules = $this->getSituationalRulesSet($request, 'getUpdateRules');
449451

450452
return array_merge_recursive(
451453
$this->getRules($request),

0 commit comments

Comments
 (0)