web-dev-qa-db-ja.com

twigテンプレートを指定する方法Drupal 8ページ?

ノードではなくスタンドアロンのページである/about-usのような事前定義されたコンテンツを含むカスタムのDrupal 8ルートを作成しようとしています。

次のチュートリアルは、#markupを使用してページコンテンツを追加する必要があるところまでのみ有効です。 https://www.drupal.org/node/2116767

ページコンテンツに使用するtwigテンプレートを指定するにはどうすればよいですか?

4
mkudenko

私はそれを働かせました。これが私の解決策です。

path/to/your/module/templates/my-custom-page.html.twigにテンプレートを作成します。

/**
 * Implements hook_theme().
 */
function mymodule_theme($existing, $type, $theme, $path)
{
    return [
        'my_custom_page' => [
            'render element' => 'custom_page',
            'path' => $path . '/templates',
            'template' => 'my-custom-page',
            'variables' => [
                'var1' => 'default value for var1',
            ],
        ],
    ];
}

render elementの意味がわかりませんが、必須です。

variables要素は、テンプレートで使用可能な変数を定義し、それらのデフォルト値を提供します。あなたはあなたのコントローラーでそれらを上書きすることができます。

use Drupal\Core\Controller\ControllerBase;

/**
 * Class CustomPageController
 */
class CustomPageController extends ControllerBase
{

    public function getPage()
    {
        return array(
            '#theme' => 'my_custom_page',
            '#var1' => 'Actual value for var1',
        );
    }

}

キャッシュをクリアして、カスタムページルートにアクセスします。すべてが機能するはずです。

便利なリンク:

8
mkudenko