Skip to main content

blocs/blocs: テンプレートエンジン概要とデータ属性一覧

blocs/blocs: テンプレートエンジン概要とデータ属性一覧

BLOCSは、Laravelで利用できるテンプレートエンジンです。HTMLの data-* 属性を使って動的コンテンツを生成し、バリデーション条件もテンプレート側で指定できます。Laravel標準のBladeと併用可能です。このドキュメントでは、BLOCSの全体像とデータ属性の一覧を説明します。

特徴

テンプレートファイルの拡張子

テンプレートエンジン 拡張子
Blade *.blade.php
BLOCS *.blocs.html

BLOCSのテンプレートは .blocs.html 拡張子で、そのままHTMLとしてブラウザで確認できます。

タグ記法

HTMLタグに data-* 属性を追加して動的に制御する方法です。開始タグにデータ属性を付けることで、タグ全体(開始〜終了)を対象に処理します。

<div class="error" data-exist=$errorMessage data-val=$errorMessage>
    errorMessage
</div>

コメント記法

HTMLコメント内にデータ属性を記述する方法です。他のテンプレートの読み込みやタグへの属性追加に使用します。コメント記法で記述した属性は、直後のHTMLタグに適用されます。

<!-- data-attribute="class" data-val="success" data-none=$error -->
<div class="error" data-val=$message>Message</div>

タグ記法とコメント記法を組み合わせた例:

<tr data-loop=$books>
    <td><!-- $book->id --></td>
    <td><!-- $book->title --></td>
    <td>
        <span data-loop=$book->tags data-assign=$bookTag>
            <!-- $bookTag->name -->
            <br>
        </span>
    </td>
</tr>

注意: 同じ内容をタグ記法とコメント記法で同時に記述することはできません。

データ属性一覧

変数を操作する

データ属性 役割
data-val 変数の値を表示
data-attribute 変数の値でHTMLタグの属性を動的に変更
data-assign 変数に値を代入
data-prefix 表示する変数の先頭に文字列を追加
data-postfix 表示する変数の末尾に文字列を追加
data-convert 変数の表示形式を整形(元の値は変更しない)

変数でHTMLタグを動的に制御する

データ属性 役割
data-exist 変数に値がある場合に処理を実行
data-none 変数に値がない場合に処理を実行
data-if 指定した条件を満たす場合に処理を実行
data-unless 指定した条件を満たさない場合に処理を実行
data-loop 配列の要素数に応じて繰り返し処理
data-repeat data-loop のエイリアス

フォーム入力にバリデーション条件を指定する

データ属性 役割
data-form, data-validate 入力値にバリデーション条件を指定(コメント記法のみ)
data-filter 入力値をバリデーション前に整形(元の値を変更。タグ記法のみ)
data-notice / data-lang 言語ファイルから翻訳文字列を取得(表示・エラーメッセージ等。data-notice のエイリアス。詳しくは No.2.9)

テンプレートを再利用する

データ属性 役割
data-include 他のテンプレートやdata-blocで定義されたブロックを読み込み
data-bloc 再利用可能なテンプレート部品(ブロック)を定義

コメント記法の終了タグ

データ属性 対応する開始属性
data-endexist data-exist
data-endnone data-none
data-endif data-if
data-endunless data-unless
data-endloop data-loop
data-endrepeat data-repeat
data-endbloc data-bloc

エイリアス・内部属性

データ属性 説明
data-repeat / data-endrepeat data-loop / data-endloop のエイリアス
data-lang data-notice のエイリアス(テンプレート上はどちらも記述可能)
data-chdir include 処理時の作業ディレクトリ切替(主にエンジン内部で使用)

重要: 上記が BLOCS テンプレートエンジンが解釈する data 属性の一覧です。HTML の標準 data 属性(例: Bootstrap の data-bs-toggle)は別途使用できますが、BLOCS 独自の動的制御用属性は一覧にないものを新規に定義することはできません。

data-notice / data-lang の使い方

data-noticedata-lang は同一属性です(エイリアス)。言語ファイルのキーを指定して翻訳文字列を変数に代入します。フォーム部品と組み合わせてエラーメッセージや案内文をテンプレート側で定義するときに使います(詳しくは No.2.9 を参照)。

<!-- data-notice="template:admin_user_invalid_title" -->

詳細ドキュメント

各データ属性の詳しい使い方は以下を参照してください。

No. タイトル
2.2 変数の表示(data-val)とメニュー項目の自動変換
2.3 変数の代入(data-assign)と属性値の置換(data-attribute)
2.4 条件分岐(data-exist/none/if/unless)
2.5 繰り返し処理(data-loop)
2.6 テンプレートの再利用(data-include / data-bloc)
2.7 表示の装飾(data-prefix/postfix)と変換(data-convert)
2.8 入力値フィルター(data-filter)
2.9 多言語対応(data-lang)
2.10 バリデーション条件の指定
2.11 カスタムバリデーションルールの作成
2.12 Auto Include(テンプレート・UIの自動読み込み)
2.13 入力インターフェース(ai-* クラス)
2.14 エラーコード一覧

省略記法

データ属性 省略記法 記法 解説
data-val=$name $name コメント記法 <!-- $name --> で変数を表示
data-attribute="href" data-val=$url :href=$url タグ・コメント href 属性に値を設定
data-form="name" data-validate="required" !name="required" コメント記法のみ バリデーションを設定
data-assign=$name data-val="値" $name="値" コメント記法 変数に値を代入