public static View::preRenderViewElement($element)
View element pre render callback.
File
- core/modules/views/src/Element/View.php, line 35
Class
- View
- Provides a render element to display a view.
Namespace
Drupal\views\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | public static function preRenderViewElement( $element ) { // Allow specific Views displays to explicitly perform pre-rendering, for // those displays that need to be able to know the fully built render array. if (! empty ( $element [ '#pre_rendered' ])) { return $element ; } if (!isset( $element [ '#view' ])) { $view = Views::getView( $element [ '#name' ]); } else { $view = $element [ '#view' ]; } $element += $view ->element; $view ->element = & $element ; // Mark the element as being prerendered, so other code like // \Drupal\views\ViewExecutable::setCurrentPage knows that its no longer // possible to manipulate the $element. $view ->element[ '#pre_rendered' ] = TRUE; if (isset( $element [ '#response' ])) { $view ->setResponse( $element [ '#response' ]); } if ( $view && $view ->access( $element [ '#display_id' ])) { if (! empty ( $element [ '#embed' ])) { $element [ 'view_build' ] = $view ->preview( $element [ '#display_id' ], $element [ '#arguments' ]); } else { // Add contextual links to the view. We need to attach them to the dummy // $view_array variable, since contextual_preprocess() requires that they // be attached to an array (not an object) in order to process them. For // our purposes, it doesn't matter what we attach them to, since once they // are processed by contextual_preprocess() they will appear in the // $title_suffix variable (which we will then render in // views-view.html.twig). $view ->setDisplay( $element [ '#display_id' ]); // Add the result of the executed view as a child element so any // #pre_render elements for the view will get processed. A #pre_render // element cannot be added to the main element as this is already inside // a #pre_render callback. $element [ 'view_build' ] = $view ->executeDisplay( $element [ '#display_id' ], $element [ '#arguments' ]); if (isset( $element [ 'view_build' ][ '#title' ])) { $element [ '#title' ] = & $element [ 'view_build' ][ '#title' ]; } if ( empty ( $view ->display_handler->getPluginDefinition()[ 'returns_response' ])) { // views_add_contextual_links() needs the following information in // order to be attached to the view. $element [ '#view_id' ] = $view ->storage->id(); $element [ '#view_display_show_admin_links' ] = $view ->getShowAdminLinks(); $element [ '#view_display_plugin_id' ] = $view ->display_handler->getPluginId(); views_add_contextual_links( $element , 'view' , $view ->current_display); } } if ( empty ( $view ->display_handler->getPluginDefinition()[ 'returns_response' ])) { $element [ '#attributes' ][ 'class' ][] = 'views-element-container' ; $element [ '#theme_wrappers' ] = array ( 'container' ); } } return $element ; } |
Please login to continue.