Skip to content

Instantly share code, notes, and snippets.

@jmolivas
Last active August 20, 2022 18:57
Show Gist options
  • Star 26 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jmolivas/d29065493a91f16f35b2 to your computer and use it in GitHub Desktop.
Save jmolivas/d29065493a91f16f35b2 to your computer and use it in GitHub Desktop.
Drupal 8 example: How to render a Twig template and load a CSS file from a Controller
.acme-hello-text {
background-color: #dedede;
}
<?php
function acme_theme() {
$theme['hello_page'] = [
'variables' => ['name' => NULL],
'template' => 'hello'
];
return $theme;
}
acme_hello:
path: '/acme/hello/{name}'
defaults:
_content: '\Drupal\acme\Controller\DefaultController::hello'
_title: 'acme Title'
requirements:
_permission: 'access content'
<?php
namespace Drupal\acme\Controller;
use Drupal\Core\Controller\ControllerBase;
class DefaultController extends ControllerBase
{
/**
* hello
* @param string $name
* @return string
*/
public function hello($name)
{
return [
'#theme' => 'hello_page',
'#name' => $name,
'#attached' => [
'css' => [
drupal_get_path('module', 'acme') . '/assets/css/acme.css'
]
]
];
}
}
<div class="acme-hello-text">
<h1>Hello {{ name }}!</h1>
</div>
@UnnikrishnanBhargavakurup

Hi,

I am getting an error Uncaught PHP Exception LogicException: "You are not allowed to use css in #attached" at common.inc line 731

@AxelBriche
Copy link

Hello, where is the location of hello.html.twig please, I need to create a directory with a specific name for this file ? Thanks.

@jmolivas
Copy link
Author

jmolivas commented Sep 4, 2015

@AxelBriche: Twig templates must be created at templates directory within the module directory.

@UnnikrishnanBhargavakurup: Attaching css is no longer valid in order to add js/css you need to create a library more information at:

@nasikshafeek
Copy link

Hi, can't we directly render a something from the controller using a twig file rather than sending it to .module file?

@ericski
Copy link

ericski commented Feb 1, 2016

I thought it might help people to get the full folder structure so I put together an example module . I also fixed the "not allowed to use css in #attached" by creating a library. I hope this helps a couple people that may have been confused on where the files are supposed to go.

@vacho
Copy link

vacho commented Feb 17, 2016

great!!

@tomasdev
Copy link

@ericski thanks man!!

@ranjan07kumar
Copy link

webform.twig.html file in custom module drupal 8 not working.
Thanks in advance

@ahernandezsouza
Copy link

Hey Sr. Olivas! You got me out of a bind. Thank you for this (y por la Consola)!

@jmolivas
Copy link
Author

glad this is still useful @ahernandezsouza

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment