【随時更新】Drupal 8, 9チートシート
Drupal 8, 9の個人的によく使う実装、DrushやDrupal Consoleのコマンドをまとめてみました。
※以下、Drupal 8 及び Drupal 9を Drupal と略します。Drupal 7 は今回の記事から対象外となります。
ログ出力 (Logging API)
Drupal のコアモジュール Database Logging を有効にした上で、ログ出力の処理をすることで /admin/reports/dblog
にて任意のログメッセージを出力をすることができます。
参照元
LoggerInterface | LoggerInterface.php | Drupal 9.0.x | Drupal API
Logging API | Logging API | Drupal guide on Drupal.org
// プレースホルダーを用いたログ
$title = 'example test title';
$foo = 'some messages';
\Drupal::logger('someKey')->notice('Title : @title, Foo :@foo', [
'@title' => $title,
'@foo' => $foo,
]);
// エラーレベルを指定することもできる
\Drupal::logger('someKey')->debug('some message');
\Drupal::logger('someKey')->info('some message');
\Drupal::logger('someKey')->notice('some message');
\Drupal::logger('someKey')->warning('some message');
\Drupal::logger('someKey')->error('some message');
\Drupal::logger('someKey')->critical('some message');
\Drupal::logger('someKey')->alert('some message');
\Drupal::logger('someKey')->emergency('some message');
// PHPのマジックメソッド __toString() を実装していない
// オブジェクトの場合、各種export, dump系の関数を用いる
\Drupal::logger('someKey')->debug(var_export(['orange', 'apple', 'banana'], true));
コマンドラインでのキャッシュクリア
いずれかの方法でキャッシュクリアが出来ます。
Drush の場合
# キャッシュ全体的にクリア
$ drush cr
# キャッシュを一部クリア
$ drush cc
Choose a cache to clear [all]:
[0] Cancel
[1] drush
[2] theme-registry
[3] router
[4] css-js
[5] render
[6] plugin
[7] bin
[8] views
> 4
[success] 'css-js' cache was cleared.
Drupal Console の場合
すみません、Drupal Console でのキャッシュクリアは Drupal 9 に対応されておらず、検証できていないです。
検証できていないですが、以下のコマンドを用いてキャッシュクリアができます。
https://github.com/hechoendrupal/drupal-console/issues/4250#issuecomment-680300452
$ drupal cr
Node のプレビュー判定
コンテンツ編集フォームの下部にある Preview
ボタンを押下した際の node エンティティを取得するのにはちょっとコツが必要。
プレビューの判定を行ってからそれぞれの node エンティティを取得する処理を実装する必要があります。
$routeName = \Drupal::routeMatch()->getRouteName();
$isPreview = $routeName === 'entity.node.preview';
$nodeEntity = \Drupal::routeMatch()->getParameter($isPreview ? 'node_preview' : 'node');
Category