hasSession(\Drupal::requestStack()->getMasterRequest()); $build = []; $cases = BigPipePlaceholderTestCases::cases(\Drupal::getContainer()); // 1. HTML placeholder: status messages. Drupal renders those automatically, // so all that we need to do in this controller is set a message. if ($has_session) { // Only set a message if a session already exists, otherwise we always // trigger a session, which means we can't test no-session requests. drupal_set_message('Hello from BigPipe!'); } $build['html'] = $cases['html']->renderArray; // 2. HTML attribute value placeholder: form action. $build['html_attribute_value'] = $cases['html_attribute_value']->renderArray; // 3. HTML attribute value subset placeholder: CSRF token in link. $build['html_attribute_value_subset'] = $cases['html_attribute_value_subset']->renderArray; // 4. Edge case: custom string to be considered as a placeholder that // happens to not be valid HTML. $build['edge_case__invalid_html'] = $cases['edge_case__invalid_html']->renderArray; // 5. Edge case: non-#lazy_builder placeholder. $build['edge_case__html_non_lazy_builder'] = $cases['edge_case__html_non_lazy_builder']->renderArray; // 6. Exception: #lazy_builder that throws an exception. $build['exception__lazy_builder'] = $cases['exception__lazy_builder']->renderArray; // 7. Exception: placeholder that causes response filter to throw exception. $build['exception__embedded_response'] = $cases['exception__embedded_response']->renderArray; return $build; } /** * @return array */ public static function nope() { return ['#markup' => '

Nope.

']; } /** * A page with multiple occurrences of the same placeholder. * * @see \Drupal\Tests\big_pipe\Functional\BigPipeTest::testBigPipeMultiOccurrencePlaceholders() * * @return array */ public function multiOccurrence() { return [ 'item1' => [ '#lazy_builder' => [static::class . '::counter', []], '#create_placeholder' => TRUE, ], 'item2' => [ '#lazy_builder' => [static::class . '::counter', []], '#create_placeholder' => TRUE, ], 'item3' => [ '#lazy_builder' => [static::class . '::counter', []], '#create_placeholder' => TRUE, ], ]; } /** * #lazy_builder callback; builds