ホーム>Laravel>Laravelのbladeでコメントアウトする方法({{-- --}}と<!-- -->の違い)
Laravel

Laravelのbladeでコメントアウトする方法({{-- --}}と<!-- -->の違い)

いつもご利用ありがとうございます。
この記事にはアフィリエイト広告を含む広告が掲載されており、その広告費によって運営しています。
Amazonのアソシエイトとして、ララテックは適格販売により収入を得ています。

Laravelのbladeでコメントアウトする方法です。{{-- --}}とHTMLの<!-- -->の違い、複数行のコメントアウト、@ifや@includeを止める書き方、入れ子にできない注意点を、Laravel 13で確かめた出力つきでまとめました。

Laravel の blade でのコメントアウトの方法をまとめます。

先に結論を書くと、blade では {{-- --}} を使うのがおすすめです。

書き方{{ }} や @if は動くかブラウザに届くHTMLに残るか
<!-- -->(HTMLのコメント)動く残る(ページのソースで見える)
{{-- --}}(bladeのコメント)動かない残らない

この表は、2026年11月に Docker の php:8.4-cli(PHP 8.4.27)・Laravel 13.40.0 で確かめた結果です。

以下、元の記事の内容と、確かめた内容を順に書きます。

コメントアウトとは

「ユーザーには表示しないけど、ファイルにメモとして残しておくもの」です。

例えば、

<html>
  <!-- この文字は表示されません -->
</html>

こんな感じで使うことができます。

Laravel の Blade でコメントアウトする方法

Laravel の blade でも通常の HTML と同じようにコメントアウトすることができます。

test.blade.php

<html>
  <!-- この文字は表示されません -->
</html>

全く HTML ファイルと同じようにコメントアウトすることができますので、大抵はこれで良いと思います。

(2026-11-08 追記) 画面には表示されませんが、HTML のコメントはそのままブラウザに送られます。

ページのソースを開くと誰でも読めるので、人に見せたくないメモは次の {{-- --}} で書いてください。

データを取り扱っている部分でのコメントアウト方法

データを取り扱っている部分で先述のコメントアウトをすると、

<html>
  <!-- {{ $post->title }} -->
</html>

$post->title が取得された上で、非表示になります。

次のやり方は、そもそもデータの取得(関数を動かさない)をしないやり方です。

{{-- $post->title --}}

このように書くと blade で使うことができる関数をそもそも動かさないようなコメントアウトをすることができます。

他の例だと

{{--
 @if($user)

 @endif
 --}}

こんな感じで@if とか、blade で使える関数を動かさないようにできます。

これのメリットは、そもそも関数を動かしたりデータの取得を行わないので、変なバグや無駄な処理をしなくて済むようになります。

ぜひご活用ください。

Laravel 13 で2つの書き方の出力を比べた結果

2026年11月に、Docker の php:8.4-cli(PHP 8.4.27)に Laravel 13.40.0 を入れ、php artisan serve で動かして curl で HTML を取得しました。

使ったビューはこれです。

<html>
<body>
  <!-- この文字は表示されません -->
  <!-- {{ $post->title }} -->
  {{-- $post->title --}}
  {{-- {{ $post->title }} --}}
  {{--
   @if($user)
     ログイン中
   @endif
  --}}
  <p>本文</p>
</body>
</html>

ルートでは $post->title に「秘密のタイトル」を入れて渡しています。

curl で取得した HTML はこうなりました。

<html>
<body>
  <!-- この文字は表示されません -->
  <!-- 秘密のタイトル -->
  
  
  
  <p>本文</p>
</body>
</html>

<!-- --> の中の {{ $post->title }} は実行されて、「秘密のタイトル」がそのまま HTML に出ています。

{{-- --}} で囲んだ3か所は、中身ごと消えて空行になりました。

storage/framework/views/ にできるコンパイル後の PHP も見てみました。

<html>
<body>
  <!-- この文字は表示されません -->
  <!-- <?php echo e($post->title); ?> -->
  
  
  
  <p>本文</p>
</body>
</html>

{{-- --}} はコンパイルの段階で取り除かれていて、PHP のコードにすら残っていません。

一方、<!-- --> の中の {{ }} は、普通に echo する PHP に変換されています。

blade から見ると <!-- --> はただの文字なので、中の {{ }} や @ で始まる命令はコメントアウトされない、ということです!

複数行をコメントアウトする

{{-- と --}} の間は、何行あってもまとめてコメントになります。

{{--
<div class="sidebar">
  @foreach($posts as $post)
    <a href="{{ route('posts.show', $post) }}">{{ $post->title }}</a>
  @endforeach
</div>
--}}

上の確かめた例でも、@if から @endif までの4行が丸ごと消えていました。

HTMLのコメントの中に書くとエラーになる例

<!-- --> の中の blade は実行されるので、エラーも起きます。

存在しない変数を <!-- --> の中に書いたビューを開くと、500 エラーになりました。

<!-- {{ $undefinedPost->title }} -->
HTTP 500
local.ERROR: Undefined variable $undefinedPost (View: /work/app/resources/views/html-undefined.blade.php)

同じ1行を {{-- --}} で囲むと、200 で表示されました。

{{-- {{ $undefinedPost->title }} --}}

@include も同じです。

まだ作っていないビューを読み込む行を <!-- --> で囲んでも、読み込みは実行されて 500 エラーになりました。

<!-- @include('parts.sidebar') -->
HTTP 500
local.ERROR: View [parts.sidebar] not found. (View: /work/app/resources/views/html-include.blade.php)

{{-- @include('parts.sidebar') --}} にすると、200 で表示されました。

「コメントアウトしたのにエラーが消えない」ときは、<!-- --> になっていないかを見てみてください。

{{-- --}} は入れ子にできない

{{-- --}} の中に、もう一つ {{-- --}} を書くと、最初の --}} でコメントが終わってしまいます。

{{-- 外側 {{-- 内側 --}} 外側の続き --}}

このビューの出力はこうでした。

   外側の続き --}}

後ろ半分が画面に出てしまいます。

すでに {{-- --}} が入っている部分をまとめてコメントアウトしたいときは、中の {{-- --}} を外してから囲むか、1か所ずつ囲む必要があります。

@phpの中ではPHPのコメントが使える

@php 〜 @endphp の中は PHP のコードなので、// や /* */ が使えます。

@php
  // 1行のPHPコメント
  /* 複数行の
     PHPコメント */
  $count = 3;
@endphp
<p>件数: {{ $count }}</p>

出力は <p>件数: 3</p> だけで、PHP のコメントは HTML に出ませんでした。

参考:公式ドキュメントの説明

Laravel の公式ドキュメントでは、blade のコメントは HTML のコメントと違い、アプリケーションが返す HTML に含まれないと説明されています。

Blade Templates - Comments(Laravel 公式ドキュメント)

まとめ

以上です。

誰かの参考になればと思います。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。