LoginSignup
5
3

More than 5 years have passed since last update.

laravel-pugでbladeの変数を展開させるときにいくつかハマったのでメモ

Last updated at Posted at 2017-11-21

BKWLD/laravel-pug を利用しているのですが、
pugにbladeの変数を展開させるときにいくつかハマったので解決法をメモしときます。

環境

名前 バージョン
PHP 7.1.6
Laravel 5.5.14
bkwld/laravel-pug 1.5.1
pug-php/pug 3.1.1
js-phpize/js-phpize-phug 1.1.7
phug/compiler 0.5.12
phug/dependency-injection 1.3.2
phug/lexer 0.5.14
phug/parser 0.5.7
phug/phug 0.1.8

ケース1. 属性値にblade変数を展開したい場合

example.pug.blade
form(action=route('login') method="POST")

というように属性値に直接bladeの変数展開させたい{{ }} の中身を書きます。

bladeなら

example.blade.php
<form action="{{ route('login') }}" method="POST">

ですね。

ケース2. 要素、属性値以外でblade変数を展開させたい場合

example.pug.blade
div.is-error {{ $errors->first('remember') }}

とbladeの記法そのままでOKです。

ケース3. @ifといったbladeの条件式などの@から始まる構文を利用したい場合

example.pug.blade
   | @if ($errors->has('remember'))
   div.is-error {{ $errors->first('remember') }}
   | @endif

というように| を利用します。


番外編【未解決】 属性値だけれども右辺に代入しない場合(checkedなどの場合)

bladeなら

example.blade.php
<input type="checkbox" id="remember" name="remember" {{ old('remember') ? 'checked' : '' }}>

とやる場合laravel-pugではどうしたらいいのかわかりませんでした…
調査中です。


pugで書くことによる恩恵もありますが、bladeの記法とバッティングしてハマりがちなのが難点…
とはいえpugだとビューがスッキリ書けるのがいいですね。

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3