2016-11-11 3 views
1

Je plonge enfin dans Drupal 8 pour un projet. Dans mon module, cependant, je n'arrive pas à définir comment rendre un modèle de mon module en fonction de l'itinéraire.Drupal 8 hook_menu() pour afficher hook_theme()

Dans Drupal 7 je normalement faire

custom.module

function union_views_menu() { 
    $items = array(); 

    $items['home'] = array(
     'title' => 'Home', 
     'description' => 'home apge', 
     'page callback' => 'home_page', 
     'access arguments' => array('access content'), 
     'type' => MENU_CALLBACK 
    ); 
    return $items; 
} 

function home_page() { 
    return theme('home_page'); 
} 

function union_views_theme(){ 
    return array(
     'home_page'  => array(
      'template' => 'templates/home-page' 
     ) 
); 
} 

Et puis j'avoir un modèle dans les modèles dossier

Avec Drupal 8 je suis arrivé à environ ici:

custom.routing.yml

custom: 
    path: /home 
    defaults: 
     _controller: Drupal\custom\Controller\CustomController::custom 
    requirements: 
     _permission: 'access content' 

src/contrôleur/CustomController.php

namespace Drupal\custom\Controller; 

class CustomController { 
    public function custom(){ 
     return array(
      '#title' => 'Custom Theme', 
      '#markup' => 'This is a content.' 
     ); 
    } 
} 

Et tous les grands travaux pour se rendre à la route. Mais je n'arrive pas à imaginer créer une fonction hook_theme pour mon hook_menu à utiliser comme callback.

Répondre

1

figured it out

Ajouter custom.module

function custom_theme() { 
    $theme['home_page'] = [ 
     'variables' => ['name' => NULL], 
     'template' => 'home_page' 
    ]; 

    return $theme; 
} 

dans mon contrôleur remplacé '#markup' avec:

'#theme' => 'home_page'