Make WordPress Core


Ignore:
Timestamp:
08/08/2024 11:28:30 AM (6 months ago)
Author:
luisherranz
Message:

Interactivity API: Allow server derived state to appear in non-final position

In some cases, derived state returns an associative array. Directives may wish to continue to access properties of the associative array, when using the syntax state.arrayReturnedByClosure.property. This patch continues evaluating the path after the associative array has been returned by the Closure.

Reviewed by adamsilverstein and gziolo.
Merges [58825] to the 6.6 branch.

Props jonsurrell, luisherranz, adamsilverstein, gziolo.

Fixes #61741.

Location:
branches/6.6
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/6.6

  • branches/6.6/tests/phpunit/tests/interactivity-api/wpInteractivityAPI.php

    r58327 r58869  
    14001400    }
    14011401
    1402 
    14031402    /**
    14041403     * Tests the `evaluate` method for derived state functions that throw.
     
    14231422        $result = $this->evaluate( 'state.derivedThatThrows' );
    14241423        $this->assertNull( $result );
     1424    }
     1425
     1426    /**
     1427     * Tests the `evaluate` method for derived state intermediate values.
     1428     *
     1429     * @ticket 61741
     1430     *
     1431     * @covers ::evaluate
     1432     */
     1433    public function test_evaluate_derived_state_intermediate() {
     1434        $this->interactivity->state(
     1435            'myPlugin',
     1436            array(
     1437                'derivedState' => function () {
     1438                    return array( 'property' => 'value' );
     1439                },
     1440            )
     1441        );
     1442        $this->set_internal_context_stack();
     1443        $this->set_internal_namespace_stack( 'myPlugin' );
     1444
     1445        $result = $this->evaluate( 'state.derivedState.property' );
     1446        $this->assertSame( 'value', $result );
    14251447    }
    14261448
Note: See TracChangeset for help on using the changeset viewer.