ν νλ¦Ώ λ¬Έλ² v2¶
λΌμ΄λ―Ήμ€ 2.1.8λΆν° ν리뷰 νμμΌλ‘ μ 곡λκ³ , λΌμ΄λ―Ήμ€ 2.2λΆν° μ μ μ§μν ν νλ¦Ώ λ¬Έλ²μ λλ€.
Laravel Blade λ¬Έλ²μ κΈ°λ°μΌλ‘, λΌμ΄λ―Ήμ€μ ꡬ쑰μ κΈ°λ₯μ λ§κ² μ¬λ¬ μ§μμ(directive)κ° μΆκ°λμμ΅λλ€.
λν κΈ°μ‘΄μ v1 λ¬Έλ² μ€ μμ μ±κ³Ό νΈλ¦¬ν¨μ΄ κ²μ¦λ μμλ€λ μλΉμ κ·Έλλ‘ μ μ§νμ¬,
νμμ λ°λΌ μμ λ‘κ² μμ΄μΈ μ μμ΅λλ€.
νμ₯μλ .html
κ³Ό .blade.php
μ€ μμ λ‘κ² μ νν μ μμ΅λλ€.
νμλ₯Ό μ νν κ²½μ°, VSCode, PHPStorm, IntelliJ λ± λλΆλΆμ μλν°(IDE)μμ
Blade νλ¬κ·ΈμΈμ μ€μΉνμ¬ λ¬Έλ² νμ΄λΌμ΄ν
κ³Ό μλ μμ±μ ννμ λ³Ό μ μμ΅λλ€.
v1 λ¬Έλ²κ³Ό λ€λ₯Έ μ ¶
Blade λ¬Έλ² κΈ°λ°μΌλ‘ v1 νΈν λ¬Έλ² μ§μ¶
ν
νλ¦Ώ λ¬Έλ² v2λ Blade 10.xμ νΈνλλλ‘ νλ κ²μ λͺ©νλ‘ μ체 ꡬνλ ν
νλ¦Ώ μ»΄νμΌλ¬λ₯Ό μ¬μ©νλ©°,
ν리뷰 κ³΅κ° μμ νμ¬ Blade 10.xμ λ¬Έλ²κ³Ό κΈ°λ₯ μ€ μΌλΆλ₯Ό μ μΈνκ³ λλΆλΆ μ§μν©λλ€.
λμμ v1 λ¬Έλ²μ²λΌ HTML νκ·Έλ μ£Όμμ μ¬μ©νλ 쑰건문과 루νλ¬Έμ ννλ μ§μν©λλ€.
λ κ°μ§ λ¬Έλ²μ μλ‘ μΆ©λνμ§ μμΌλ―λ‘, νλμ ν
νλ¦Ώ μμ§μμ λμμ μ¬μ©ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ Bladeμ ifλ¬Έ μ’μ°μ <!--
-->
μ£Όμμ λΆμ΄κ±°λ,
λ°μ΄ν°λ₯Ό μΆλ ₯νλ {{ ... }}
λ¬Έλ²μμ μ€κ΄νΈλ₯Ό νλμ©λ§ μ°λ©΄
λλΆλΆμ v1 ν
νλ¦Ώμμ μ΅μνκ² μ¨μ¨ λ¬Έλ²μ΄ λλ κ²μ λ³Ό μ μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@if ($condition)
<div class="comment">{{ $comment }}</div>
@endif
[v1 νΈν λ¬Έλ²]
<!--@if($condition)-->
<div class="comment">{$comment}</div>
<!--@end-->
μ΄λ κ² v1κ³Ό λΉμ·ν μ μ΄ λ§μ μ μνκΈ° μ½λ€λ κ²μ
λΌμ΄λ―Ήμ€μ μ°¨κΈ° ν
νλ¦Ώ λ¬Έλ²μΌλ‘ Bladeλ₯Ό μ±νν μ΄μ μ€ νλμ
λλ€.
κ·Έλ¬λ v1 νΈν λ¬Έλ²μ μ΄λκΉμ§λ v1μ μ΅μν ν
λ§ μ μμμ λΌμ΄λ―Ήμ€ μ¬μ©μλ€μ΄
κΈ°μ‘΄ ν
νλ¦Ώμ λ³ννκ³ μ ν
νλ¦Ώ λ¬Έλ²μ λ°°μ°λ λ° λμμ μ£ΌκΈ° μν΄ μ§μνλ κ²μ΄λ―λ‘,
κ°λ₯νλ©΄ v2 μ κ· λ¬Έλ²λ§μ μ¬μ©ν κ²μ κΆμ₯ν©λλ€.
μλμ λ¬Έμμμλ Blade μ€νμΌμ λ¬Έλ²μ "v2 μ κ· λ¬Έλ²"μΌλ‘,
v1κ³Ό νΈνλκ±°λ μ μ¬ν λ¬Έλ²μ "v1 νΈν λ¬Έλ²"μΌλ‘ μκ°ν©λλ€.
λ¬Έλ§₯μ λ§λ μλ μ΄μ€μΌμ΄ν¶
ν
νλ¦Ώμμ μΆλ ₯νλ λͺ¨λ λ°μ΄ν°λ μλμΌλ‘ escape μ²λ¦¬λκ³ , μ΄ κΈ°λ₯μ μΌκ΄μ μΌλ‘ ν΄μ νλ μ΅μ
μ μ 곡νμ§ μμ΅λλ€.
κΌ νμν κ³³μμλ§ noescape
νν°λ {!! $var !!}
λ¬Έλ²μ μ¬μ©νμ¬ κ°λ³μ μΌλ‘ ν΄μ ν μ μμ΅λλ€.
λ¨, μ΄λ―Έ escapeλ λ°μ΄ν°λ₯Ό μ΄μ€ μΈμ½λ©νμ§λ μμ΅λλ€.
<script>
νκ·Έ μμμ μλ°μ€ν¬λ¦½νΈ λ³μμ λ°μ΄ν°λ₯Ό μΆλ ₯ν λλ μλμΌλ‘ λ¬Έλ§₯μ μΈμνμ¬,
HTMLμ΄ μλ JS λ¬Έλ²μ λ§λ ννλ‘ escapeν©λλ€.
μλ₯Ό λ€μ΄ <
λ HTML λ¬Έλ§₯μμλ <
λ‘ λ³ννκ³ , JS λ¬Έλ§₯μμλ \u003C
λ‘ λ³νν©λλ€.
HTML λ¬Έλ§₯μμ JSONμ μΆλ ₯ν λλ λͺ¨λ "
λ₯Ό "
λ‘ λ³ννμ§λ§, JS λ¬Έλ§₯μμλ κ·Έλλ‘ μΆλ ₯ν©λλ€.
νμ μΌκ΄μ±μλ Context μ°Έμ‘°¶
ν
νλ¦Ώ v1μμλ <?php ?>
νκ·Έλ₯Ό μ¬μ©νμ¬ PHP μ½λλ₯Ό μ§μ μμ±νλ©΄
Context
λ₯Ό μ°Έμ‘°νμ§ μλ λ‘컬 λ³μκ° μμ±λμ΄,
{@ ...}
μ κ°μ ν
νλ¦Ώ λ¬Έλ²μμ μ¬μ©νλ λ³μλ€κ³Ό μ°λλμ§ μλ λΆνΈμ΄ μμμ΅λλ€.
ν
νλ¦Ώ v2μμλ ν
νλ¦Ώ νμΌμμ μ¬μ©νλ λͺ¨λ λ³μκ° νμ μΌκ΄μ±μκ² Context
λ₯Ό μ°Έμ‘°ν©λλ€.
(μλμμ μ€λͺ
νλ μμΈκ° μμΌλ, μμΈ μμ νμ μΌκ΄μ±μκ² μ μ©λ©λλ€.)
<block>, loop, cond μμ± λ―Έμ§μ¶
XE 1.4.4 λ²μ μ΄ν μλ§μ ν
νλ¦Ώ ν΄μ μ€λ₯μ μμΈμ΄ λμ΄ μ¨
<block>
κ°μ νκ·Έ, loop
μμ±, cond
μμ±μ μ§μνμ§ μμ΅λλ€.
λμ΄μ μμμ νκ·Έμμ μ΄λ¬ν μμ±μ μ¬μ©ν μ μκ³ ,
μ¬μ©μ μΆλ ₯λ¬Όμ μμ€κ° κ·Έλλ‘ λ¨κ±°λ μ€λ₯κ° λ°μν μ μμ΅λλ€.
<include>
μμλ cond
μμ±μ μ§μνμ§λ§,
Blade λ¬Έλ²κ³Ό μ μ¬ν if
, when
, unless
λ‘ λ³κ²½ν κ²μ κΆμ₯ν©λλ€.
νλμ μμ±μ νμν μ§ μ¨κΈΈμ§ κ²°μ νλ |cond=""
λ¬Έλ²μ κ³μ μ§μνμ§λ§,
λΆκ°νΌν κ²½μ°κ° μλλΌλ©΄ λμ± κ°λ ₯ν Blade μ€νμΌμ
@class
, @style
, @selected
λ±μ μ§μμλ₯Ό νμ©ν κ²μ κΆμ₯ν©λλ€.
κ°λ ₯ν λΆκ° κΈ°λ₯¶
λ€μμ€νμ΄μ€λ₯Ό ν¬ν¨νκ±°λ μμ£Ό κΈ΄ ν΄λμ€λͺ
μ μμ£Ό μ°Έμ‘°ν κ²½μ°,
alias μ²λ¦¬νμ¬ κ°κ²°νκ² μΈ μ μμ΅λλ€.
ν
νλ¦Ώ νμΌμ μΈν΄λ£¨λν λ λ³μ λͺ©λ‘μ ν¨κ» λκΈ°λ©΄ μΌλ° μΈν΄λ£¨λκ° μλ μ»΄ν¬λνΈλ‘ μ·¨κΈνμ¬,
Context
μ μ μλ³μλ₯Ό 곡μ νμ§ μκ³ ν΄λΉ λ³μλ€λ§ μ¬μ©νμ¬ λ λλ§νλλ‘ ν μ μμ΅λλ€.
μ½μ΄μμ ν΅ν© κ΄λ¦¬νλ 리μμ€ λ‘λ© κΈ°λ₯, μλκ²½λ‘ μλ λ³ν, μΆλ ₯ νν° λ±
v1μ ν΅μ¬ κΈ°λ₯λ€λ λλΆλΆ κ·Έλλ‘ κ°μ Έμμ΅λλ€.
Laravel Bladeκ° μ 곡νλ @auth
, @can
λ±μ μ§μμλ₯Ό λΌμ΄λ―Ήμ€μ κΆν 체κ³μ λ§κ² μ¬ν΄μνμ¬,
κ²μν κ΄λ¦¬μμΈμ§, λκΈ μ°κΈ° κΆνμ΄ μλμ§ λ±μ μμ½κ² 체ν¬ν μ μμ΅λλ€.
λΆκ° κΈ°λ₯μ μ΄ λ§€λ΄μΌ νλ¨μμ λ μμΈν μ€λͺ ν©λλ€.
λ²μ νκΈ° λ°©λ²¶
νμ₯μκ° .blade.php
μΈ ν
νλ¦Ώ νμΌμ λͺ¨λ v2λ‘ μΈμν©λλ€.
νμ₯μκ° .html
μΈ νμΌμμ v2 λ¬Έλ² μ¬μ©μ μνλ€λ©΄ μ΅μλ¨μ λ²μ μ νκΈ°ν΄μΌ ν©λλ€.
λ²μ νκΈ° λ°©λ²μ 2κ°μ§κ° μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@version(2)
[v1 νΈν λ¬Έλ²]
<config version="2" />
λ°μ΄ν° μΆλ ₯¶
λ³μλ κ·Έ λ°μ PHP ννμμ μΆλ ₯ν λλ λ μμ μ€κ΄νΈλ₯Ό μ¬μ©νλ κ²μ΄ Blade λ¬Έλ²μ νμ€μ λλ€.
[v2 μ κ· λ¬Έλ²]
{{ $var }}
{{ $oDocument->getNickName() }}
λ¨, v1μ²λΌ μ€κ΄νΈλ₯Ό νλλ§ μ°λ κ²λ νμ©ν©λλ€. μ΄ λ, μ€κ΄νΈ λ°λ‘ μμͺ½μ κ³΅λ°±μ΄ μμ΄μλ μ λ©λλ€.
[v1 νΈν λ¬Έλ²]
{$var}
{$oDocument->getNickName()}
ν μμ μ€κ΄νΈλ§ μ¬μ©ν λλ ν΄λ‘μ Έ λ± μ€κ΄νΈκ° ν¬ν¨λλ μ½λλ₯Ό μ¬μ©ν μ μκ³ ,
μ€κ΄νΈ μμμ μ€λ°κΏμ ν μ μλ€λ μ νμ΄ μμ΅λλ€.
v1 νΈν λ¬Έλ²μ μΌλ°μ μΈ CSS, JS λ¬Έλ²κ³Ό μΆ©λνλ κ²½μ°κ° λ§μΌλ―λ‘,
λΌμ΄λ―Ήμ€ 2.1.22λΆν° CSS, JS λ¬Έλ§₯μμλ μ΄ λ¬Έλ²μ νμ©νμ§ μμ΅λλ€.
μλμ μμΉμμλ λ°λμ λ μμ μ€κ΄νΈλ‘ λ°μ΄ν°λ₯Ό μΆλ ₯ν΄μΌ ν©λλ€.
<script>
νκ·Έ μ<style>
νκ·Έ μonclick
λ± μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ μΈνλ μμ± μ<a href="javascript:...">
λ± JSλ₯Ό μ¬μ©νλ μμ± μ- λͺ¨λ νκ·Έμ
style
μμ± μ
λ³μμ μ ν¨ λ²μ(μ€μ½ν)¶
v1μ μΌλμ λκ³ λ§λ€μ΄μ§ λ§μ μλ£λ€κ³Ό νΈνμ±μ μ μ§νκΈ° μν΄,
v2 ν
νλ¦Ώμμ μ¬μ©νλ λ³μλ€λ λͺ¨λ Context
μ μ°λλ©λλ€.
λͺ¨λμ΄λ μμ ― λ±μμ Context::set('foo', $value)
λ‘ μ
ν
νμκ±°λ
$_GET['foo']
λ‘ λ€μ΄μ¨ URL νλΌλ―Έν°μ κ°μ ν
νλ¦Ώμμ $foo
λ³μλ‘ μ°Έμ‘°ν μ μκ³ ,
λ°λλ‘ ν
νλ¦Ώμμ $foo
λΌλ λ³μλ₯Ό μ‘°μνλ©΄ λ€λ₯Έ μλ£μμ Context::get('foo')
λ‘ λ³κ²½λ κ°μ λΆλ¬μ¬ μ μμ΅λλ€.
μ¦, Context
λ₯Ό κ³΅μ© state μ μ₯μλ‘ μ¬μ©ν©λλ€.
λ¨, μλμ κ°μ λ³μλ Context
μ μ°λλμ§ μμ΅λλ€.
- λ³μμ ν¨κ» μΈν΄λ£¨λν ν νλ¦Ώ νμΌ λ΄μμ μ¬μ©νλ λ³μ (μΈν΄λ£¨λμ λ³μ μ λ¬ μ°Έκ³ )
$_SERVER
,$_SESSION
,$GLOBALS
λ±μ μ΄μ μλ³μ(superglobals)Template
ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ$this
- λ³μ μμ
\
λ₯Ό λΆμ¬\$foo
μ κ°μ΄ νκΈ°νλ©΄ λ‘컬 λ³μκ° λ©λλ€.
ν΄λ‘μ Έλ₯Ό μ μΈν λλ μ΄ λ°©λ²μ μ¬μ©ν΄μΌ ν©λλ€.
μλμ μμμμ $list
λ Context
μ μμλ λ³μμ΄κ³ , \$i
λ ν΄λ‘μ Έ λ΄λΆμμ μ¬μ©νλ λ‘컬 λ³μμ
λλ€.
[ν΄λ‘μ Έ μ¬μ© μμ]
{{ implode(', ', array_map(function(\$i) { return \$i * 1000; }, $list)) }}
[μ£Όμ]
ν νλ¦Ώ μ»΄νμΌλ¬κ° λ΄λΆ λ°μ΄ν° μ²λ¦¬λ₯Ό μν΄ μ¬μ©νλ λ‘컬 λ³μλ$__tmp
λ± 2κ°μ μΈλλ°λ‘ μμνλ κ²μ΄ λ§μ΅λλ€.
ν νλ¦Ώ λ΄μμ λ‘컬 λ³μ μ¬μ©μ μ»΄νμΌλ¬ λ΄λΆ λ³μμ μΆ©λνμ§ μλλ‘, 2κ°μ μΈλλ°λ‘ μμνλ μ΄λ¦μ νΌνμκΈ° λ°λλλ€.
μΆλ ₯ νν°¶
v1κ³Ό λμΌν μΆλ ₯ νν°λ₯Ό μ§μν©λλ€.
v1κ³Ό λ€λ₯Έ μ μ νν°λ₯Ό ꡬλΆνλ |
λ¬Έμ μ’μ°μ 곡백μ νμ©νλ€λ κ²μ
λλ€.
μλμ μμ λ $var
λ₯Ό μλ¬Έμλ‘ λ³ννκ³ escapeνμ¬ μΆλ ₯ν©λλ€.
{{ $var|lower|escape }}
μλμ μμ λ νμμ€ν¬νλ₯Ό νΉμ ν ννλ‘ ν¬λ§·νμ¬ μΆλ ₯ν©λλ€. νν°λͺ
κ³Ό μ΅μ
μ :
μΌλ‘ ꡬλΆν©λλ€.
{{ $timestamp|date:'n/j H:i' }}
νν° μ΄μΈμ μλ―Έλ‘ |
λ¬Έμλ₯Ό μ¬μ©ν κ²½μ°, μλͺ» ν΄μλμ§ μλλ‘ μ£Όμν΄μΌ ν©λλ€.
v2 ν
νλ¦Ώ λ¬Έλ²μ μλμ κ°μ΄ 3κ°μ§ μμΈλ₯Ό νμ©ν©λλ€.
- 2κ°λ₯Ό λΆμ¬ ORμ μλ―Έλ₯Ό κ°λ
||
μ°μ°μλ₯Ό μ¬μ©ν κ²½μ° - λ¬Έμμ΄ μμ λ¨λ
μΌλ‘ λ£μ΄
'|'
λ‘ νκΈ°ν κ²½μ° (μ:join
νν°μ ꡬλΆμλ‘ μ¬μ©ν κ²½μ°) \|
λ‘ μ΄μ€μΌμ΄νν κ²½μ°
v2μμ μ§μνλ λͺ¨λ νν°μ λͺ©λ‘μ μλμ νλ₯Ό μ°Έκ³ νμμμ€.
νν°λͺ | κΈ°λ₯ | μ΅μ |
---|---|---|
autoescape | μλ escape (μ΄μ€ μΈμ½λ©νμ§ μμ) | |
autolang | μλ escapeνλ, μΈμ΄μ½λμΈ κ²½μ° escapeνμ§ μμ | |
escape | κ°μ escape (μ΄μ€ μΈμ½λ©) | |
noescape | escapeνμ§ μμ | |
escapejs | JS λ¬Έμμ΄μ λ£μ μ μλ ννλ‘ escape | |
json | JSONμΌλ‘ μΈμ½λ© (JS λ¬Έλ§₯μμλ noescapeμ ν¨κ» μ¬μ©) | |
strip | strip_tags() | |
strip_tags | strip_tags() | |
trim | trim() | |
urlencode | rawurlencode() | |
lower | μλ¬Έμλ‘ λ³ν | |
upper | λλ¬Έμλ‘ λ³ν | |
nl2br | κ°ν λ¬Έμλ₯Ό <br> λ‘ λ³ν (noescape μλ μ μ©) |
|
join | λ°°μ΄μ λ¬Έμμ΄λ‘ ν©μΉ¨ | ꡬλΆμ, κΈ°λ³Έκ°μ , |
date | νμμ€ν¬ν ν¬λ§· | μ¬μ©ν ν¬λ§·, κΈ°λ³Έκ°μ Y-m-d H:i:s |
format | μ«μμ μ² λ¨μ μΌν νμ | μμμ μ΄ν μλ¦Ώμ, κΈ°λ³Έκ°μ 0 |
number_format | μμ κ°μ | |
shorten | μ«μλ₯Ό 123.4K μ κ°μ ννλ‘ νμ |
μμ«μ μ΄ν μλ¦Ώμ, κΈ°λ³Έκ°μ 2 |
number_shorten | μμ κ°μ | |
link | λ¬Έμμ΄μ λ§ν¬λ‘ νμ (noescape μλ μ μ©) | λ§ν¬ ν μ€νΈ, κΈ°λ³Έκ°μ μλ³Έ λ¬Έμμ΄ |
쑰건문 λ° λ£¨νλ¬Έ¶
쑰건문¶
Blade μ€νμΌμ 쑰건문과 루νλ¬Έμ
PHPμ alternative syntax for control structuresλ₯Ό κΈ°λ°μΌλ‘, μμ @
λ¬Έμλ₯Ό λΆμ¬ ꡬλΆνλ κ²μ΄ μμΉμ
λλ€.
μ΄κ²μ XEμ λΌμ΄λ―Ήμ€κ° κ·Έλμ μ¨μ¨ ν
νλ¦Ώ λ¬Έλ² v1κ³Ό λ§€μ° ν‘μ¬νλ°,
v1μ 쑰건문과 루νλ¬Έ λ¬Έλ²μμ μ’μ°μ μ£Όμμ μ§μ°λ©΄ Blade μ€νμΌμ μ§μμ(directive)μ λμΌν ννκ° λκΈ° λλ¬Έμ
λλ€.
μ΄λ¬ν μ μ¬μ λλΆμ, v1μ²λΌ μ£Όμμ μ¬μ©νλλΌλ μ μ μΈμνλλ‘ λμ΄ μμ΅λλ€.
μ¦, μ’μ°μ μ£Όμμ μμ ν ν λμΌνκ² μ²λ¦¬ν©λλ€.
@if
μ κ΄νΈ μ¬μ΄μ λμ΄μ°κΈ°λ₯Ό νμ§ μλλΌλ 무방νκ³ ,
@endif
λ₯Ό @end
λ‘ μΆμ½ν΄μ μ¨λ λ¬Έμ κ° μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@if ($condition1)
<div class="foo"></div>
@elseif ($condition2)
<div class="bar"></div>
@else
<div class="baz"></div>
@endif
[v1 νΈν λ¬Έλ²]
<!--@if($condition1)-->
<div class="foo"></div>
<!--@elseif($condition2)-->
<div class="bar"></div>
<!--@else-->
<div class="baz"></div>
<!--@end-->
[μ£Όμ]
κ΄νΈλ₯Ό μ¬μ©νλ Blade μ€νμΌμ λͺ¨λ μ§μμλ μ κ·μ(PCRE)μ μ¬μ©νμ¬ ν΄μλ©λλ€.
μ¬λ κ΄νΈμ μ§μ΄ λ§λ κ΄νΈλ₯Ό μ°Ύλ κ²μ΄ μ΄ μ κ·μμ ν΅μ¬ κΈ°λ₯μΌλ‘,
볡μ‘ν μλ£ κ΅¬μ‘°λ₯Ό μ¦μμμ μ μΈνκ±°λ λ¬Έμμ΄ μμ κ΄νΈλ₯Ό λ£λ λ± ν΄μμ λ°©ν΄νλ©΄
v1 ν νλ¦Ώμloop
,cond
μμ±κ³Ό λ§μ°¬κ°μ§λ‘ μ€μλν μ μμ΅λλ€.
μ΄κ²μ Laravel Blade 곡μ λ¬Έμμμλ κ²½κ³ νκ³ μλ λΆλΆμ λλ€.
볡μ‘ν μλ£ κ΅¬μ‘°λ λ³λλ‘ μ μΈν ν λ³μλ§ λκΈ°λ κ²μ κΆμ₯ν©λλ€.
foreach 루ν¶
λμΌν κ·μΉμ λ°λ₯΄λ©°, v1 νΈν λ¬Έλ²λ λ§μ°¬κ°μ§μ λλ€.
[v2 μ κ· λ¬Έλ²]
@foreach ($array as $key => $val)
<div class="item">{{ $val->name }}</div>
@endforeach
v1μμ μ¬μ©νλ <block loop="...">
λ¬Έλ²μ μ§μνμ§ μμ΅λλ€.
forelse 루ν¶
Bladeμμ λμ
ν λ¬Έλ²μΌλ‘, ifλ¬Έκ³Ό foreachλ¬Έμ κ²°ν©ν ννλ₯Ό λ±λλ€.
λ°°μ΄μ΄ λΉμ΄ μλ κ²½μ° νμν λ΄μ©μ μ½κ² μ§μ ν μ μμ΅λλ€.
μ€κ°μ μ¬μ©νλ μ§μμλ @else
κ° μλλΌ @empty
μμ μ μνμμμ€.
μμ λ§μ°¬κ°μ§λ‘, μ΄κ²λ μ’μ°μ μ£Όμμ λΆμ¬ v1 λ¬Έλ²μ²λΌ μ¬μ©ν μ μμ΅λλ€.
@endforelse
λ @end
λ‘ μΆμ½ν μ μμΌλ,
μΌν 보μμ λ λ€λ₯Έ 루νλ¬Έκ³Ό νΌλν κ°λ₯μ±μ΄ μμΌλ―λ‘ μΆμ½νμ¬ μ°λ κ²μ κΆμ₯νμ§ μμ΅λλ€.
@forelse ($array as $key => $val)
<div class="item">{{ $val->name }}</div>
@empty
<div class="noitem">νλͺ©μ΄ μμ΅λλ€.</div>
@endforelse
루ν λ³μ¶
foreach 루ν, forelse 루νμμλ Bladeμ κ°μ 루ν λ³μλ₯Ό μ§μν©λλ€.
λ³μ μμ± | νμ | μλ―Έ |
---|---|---|
$loop->index | int | νμ¬ λ£¨ν μΈλ±μ€ (0λΆν° μμ) |
$loop->iteration | int | νμ¬ λ°λ³΅ νμ (1λΆν° μμ) |
$loop->remaining | int | λ¨μ νμ |
$loop->count | int | μ΄ λ°λ³΅ νμ |
$loop->first | bool | νμ¬ μ²« λ²μ§Έ νλͺ©μΈ κ²½μ° μ°Έ |
$loop->last | bool | νμ¬ λ§μ§λ§ νλͺ©μΈ κ²½μ° μ°Έ |
$loop->even | bool | νμ¬ μ§μλ²μ§Έ νλͺ©μΈ κ²½μ° μ°Έ |
$loop->odd | bool | νμ¬ νμλ²μ§Έ νλͺ©μΈ κ²½μ° μ°Έ |
$loop->depth | int | μ€μ²©λ 루νλ¬Έμ κΉμ΄ |
$loop->parent | object or null | μμ 루ν λ³μ (μ΅μμ 루νλ null) |
foreachλ¬Έ μμ λλ€λ₯Έ foreachλ¬Έμ΄ μλ κ²½μ° $loop->depth
κ° 1λΆν° μμνμ¬ μ μ μ¦κ°νλ©°,
μμͺ½ 루ν λ³μμ $loop->parent
λ₯Ό ν΅ν΄ λ°κΉ₯μͺ½ 루ν λ³μμ μ κ·Όν μ μμ΅λλ€.
μ΄ λ³μλ€μ νμ©νλ©΄ 볡μ‘ν 루νλ¬Έ μμμ μ²μ, λ§μ§λ§, nλ²μ§Έ, μ§μλ²μ§Έ μ€μ λ§μ§λ§ λ±
λ€μν 쑰건μ μ½κ² ꡬνν μ μμ΅λλ€.
κ·Έ λ°μ μ£Όμ 루νλ¬Έ¶
forλ¬Έ, whileλ¬Έ, switchλ¬Έ λ± PHPμμ μ§μνλ 루νλ¬Έμ΄λΌλ©΄ λͺ¨λ μ¬μ©ν μ μκ³ ,
Bladeμ λ§μ°¬κ°μ§λ‘ @continue
, @break
, @default
λ₯Ό μ§μνλ―λ‘
switchλ¬Έμ²λΌ 볡μ‘ν ꡬ쑰μ 루νλ PHPλ₯Ό μ¬μ©νμ§ μκ³ ν
νλ¦Ώ λ¬Έλ²λ§μΌλ‘ ꡬνν μ μμ΅λλ€.
λ¨, 볡μ‘ν 루νλ PHP μ½λλ₯Ό μ§μ μ¬μ©νλ κ²μ΄ λ ν¨μ¨μ μΈ κ²½μ°λ μμΌλ
μ μ ν νμ©νμκΈ° λ°λλλ€.
@for ($i = 0; $i < 10; $i++)
@if ($condition)
@continue
@endif
<div class="count">{{ $i }}</div>
@endfor
@while (true)
<div class="forever"></div>
@if ($condition)
@break
@endif
@endwhile
@switch ($color)
@case ('red')
<div class="red"></div>
@break
@case ('blue')
<div class="blue"></div>
@break
@default
<div class="default"></div>
@endswitch
νΈμλ₯Ό μν 쑰건문¶
Blade 10.xμμ μ§μνλ 쑰건문μ @hasSection
μ μ μΈνκ³ λͺ¨λ μ§μν©λλ€.
@auth
, @can
λ± μΌλΆλ λΌμ΄λ―Ήμ€μ κΆν κ΄λ¦¬ 체κ³μ λ§μΆμ΄ μ¬ν΄μνμμ΅λλ€.
λΌμ΄λ―Ήμ€μμ μ μ©νκ² μΈ μ μλ 쑰건문λ λͺ κ°μ§ μΆκ°λμμ΅λλ€.
λ΄λΆμ μΌλ‘λ λͺ¨λ ifλ¬ΈμΌλ‘ μ»΄νμΌλλ―λ‘ νμμ @else
λ @elseif
λ₯Ό λΌμ μ¬μ©ν μ μκ³ ,
λ§μΉλ μ§μμλ λͺ¨λ @end
λ‘ μΆμ½ν μ μμ΅λλ€.
@isset ($foo)
Contextμ $foo λ³μκ° μ‘΄μ¬ν©λλ€.
@endisset
@unset ($foo)
Contextμ $foo λ³μκ° μ‘΄μ¬νμ§ μμ΅λλ€.
@endunset
@empty ($foo)
Contextμ $foo λ³μκ° μ‘΄μ¬νμ§ μκ±°λ, λΉ κ°μ
λλ€.
@endempty
@env ('foo')
fooλΌλ νκ²½λ³μ($_ENV['foo'])κ° μ‘΄μ¬ν©λλ€.
@endenv
@admin
μ΅κ³ κ΄λ¦¬μμ
λλ€.
@endadmin
@auth('admin')
μ΅κ³ κ΄λ¦¬μμ
λλ€.
@endauth
@auth('manager')
κ²μν κ΄λ¦¬μμ
λλ€.
@endauth
@auth
λ‘κ·ΈμΈν νμμ
λλ€.
@endauth
@guest
λ‘κ·ΈμΈνμ§ μμμ΅λλ€.
@endguest
@can ('view')
κΈμ½κΈ° κΆνμ΄ μμ΅λλ€. ($grant->viewκ° μμ΅λλ€.)
@endcan
@cannot ('view')
κΈμ½κΈ° κΆνμ΄ μμ΅λλ€. ($grant->viewκ° μμ΅λλ€.)
@endcannot
@canany (['view', 'write_comment'])
κΈμ½κΈ°, λκΈμ°κΈ° μ€ μ΅μ 1κ°μ κΆνμ΄ μμ΅λλ€.
@endcanany
@desktop
PCμ
λλ€.
μλ @mobile @endmobile μ§μμμ λ°λ 쑰건μ
λλ€.
@enddesktop
@mobile
λͺ¨λ°μΌμ
λλ€.
λΌμ΄λ―Ήμ€ 2.1.21 μ΄μ : λͺ¨λ°μΌ λ·° μ€μ κ³Ό m νλΌλ―Έν°μ μν₯μ λ°μ΅λλ€.
λΌμ΄λ―Ήμ€ 2.1.22 μ΄ν: μ μν User-Agentμ "νλΈλ¦Ώλ λͺ¨λ°μΌ μ·¨κΈ" μ€μ λ§μ λ°λ¦
λλ€.
@endmobile
ν νλ¦Ώ μΈν΄λ£¨λ¶
λ€λ₯Έ ν
νλ¦Ώ νμΌμ μΈν΄λ£¨λνλ €λ©΄ @include
μ§μμλ₯Ό μ¬μ©ν©λλ€.
κ²½λ‘λ νμ¬ ν
νλ¦Ώ νμΌμ κΈ°μ€μΌλ‘ νλ μλκ²½λ‘μ
λλ€.
[v2 μ κ· λ¬Έλ²]
@include ('dir/filename')
λ¨, λ§μ λλ ν 리λ₯Ό κ±°μ¬λ¬ μ¬λΌκ°μΌ νλ κ²½μ° ^
λ¬Έμλ₯Ό μ¬μ©νμ¬
λΌμ΄λ―Ήμ€ μ€μΉ λλ ν 리λ₯Ό κΈ°μ€μΌλ‘ νλ κ²½λ‘λ₯Ό μμ±ν μ μμ΅λλ€.
μ΄κ²μ CSS, JS λ±μ 리μμ€λ₯Ό λ‘λ©ν λλ λμΌν©λλ€.
[v2 μ κ· λ¬Έλ²]
@include ('^/common/tpl/default_layout')
v1μ²λΌ νκ·Έλ₯Ό μ¬μ©νλ λ¬Έλ²λ νμ©νλ©°, μ΄ κ²½μ° src
μμ± λμ target
μ μ¨λ μ μ μΈμν©λλ€.
(HTMLμμ λ리 μ¬μ©νλ μμ±μ λ€λ₯Έ μλ―Έλ₯Ό λΆμ¬νμ§ λ§μλ μ·¨μ§λ‘,
target
μ λμ΄μ κΆμ₯νμ§ μμΌλ μ§μμ μ€λ¨νμ§λ μμμ΅λλ€.)
[v1 νΈν λ¬Έλ²]
<include src="dir/filename" />
<include target="dir/filename" />
μ‘°κ±΄λΆ μΈν΄λ£¨λ¶
νΉμ μ‘°κ±΄μ΄ μΆ©μ‘±λ λμλ§ μΈν΄λ£¨λνλλ‘ ν μ μμ΅λλ€.
@includeIf
: νμΌμ΄ μ‘΄μ¬νλ κ²½μ°μλ§ μΈν΄λ£¨λνκ³ , μ‘΄μ¬νμ§ μλλΌλ μ€λ₯λ₯Ό νμνμ§ μμ΅λλ€.@includeWhen
: 첫 λ²μ§Έ νλΌλ―Έν°λ‘ μ λ¬ν μ‘°κ±΄μ΄ μ°ΈμΈ κ²½μ°μλ§ μΈν΄λ£¨λν©λλ€.@includeUnless
: 첫 λ²μ§Έ νλΌλ―Έν°λ‘ μ λ¬ν μ‘°κ±΄μ΄ κ±°μ§μΈ κ²½μ°μλ§ μΈν΄λ£¨λν©λλ€.
[v2 μ κ· λ¬Έλ²]
@includeIf ('../dir/filename)
@includeWhen ($condition, '../dir/filename')
@includeUnless ($condition, '../dir/filename')
κ·Έ μ€ 2κ°μ§ 쑰건μ v1 νΈν λ¬Έλ²μΌλ‘λ ꡬνν μ μμ΅λλ€. v1 λ¬Έλ²μ cond
μ ν΄λΉν©λλ€.
νΈμλ₯Ό μν΄ when
μμ±μ cond
λ‘ μΈ μλ μκ³ , if
λ‘ μΈ μλ μμ΅λλ€.
λ¨, νμΌμ΄ μ‘΄μ¬νλ κ²½μ°μλ§ μΈν΄λ£¨λνλ€λ 쑰건μ μ§μνμ§ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<include src="../dir/filename" when="$condition">
<include src="../dir/filename" unless="$condition">
μΈν΄λ£¨λμ λ³μ μ 묶
λ€λ₯Έ ν
νλ¦Ώμ μΈν΄λ£¨λν λ μ°κ΄λ°°μ΄μ΄λ μ€λΈμ νΈλ₯Ό μ λ¬νλ©΄,
μΈν΄λ£¨λλ ν
νλ¦Ώμ Context
λ₯Ό μ°Έμ‘°νμ§ μκ³ μ λ¬λ°μ λ°μ΄ν°λ§μ μ¬μ©νκ² λ©λλ€.
μλ₯Ό λ€μ΄ μλμ κ°μ΄ A νμΌμ΄ B νμΌμ μΈν΄λ£¨λνμ λ, B νμΌ λ΄μ $title
κ³Ό $content
λ
μΌλ°μ μΈ ν
νλ¦Ώμμμ λ¬λ¦¬ Context
λ₯Ό μ°Έμ‘°νμ§ μμ΅λλ€.
μ λ¬λ°μ μ°κ΄λ°°μ΄μ ν΄λΉ ν€λ₯Ό μ°Έμ‘°νλ©°, λ§μ½ μ‘΄μ¬νμ§ μλ ν€λ₯Ό μ°Έμ‘°ν κ²½μ° κ²½κ³ κ° λ°μν©λλ€.
μ΄ λ°©λ²μ μ¬μ©νμ¬ μΈλΆμ λ€λ₯Έ λ³μμ μν₯μ λ°μ§ μλ λ
립μ μΈ μ»΄ν¬λνΈλ₯Ό ꡬνν μ μκ³ ,
νΈμΆνλ μͺ½μμλ ν΄λΉ μ»΄ν¬λνΈ λ΄μμ μ¬μ©νλ λͺ¨λ λ³μλ₯Ό ν΅μ ν μ μκ² λ©λλ€.
[A.blade.php]
@include ('B', ['title' => 'μ λͺ©', 'content' => 'λ΄μ©'])
[B.blade.php]
<article>
<h1>{{ $title }}</h1>
<div class="content">
{{ $content|noescape }}
</div>
</article>
λ³μλ₯Ό μ λ¬νμ¬ μΈν΄λ£¨λλ ν
νλ¦Ώμμ λλ€λ₯Έ ν
νλ¦Ώμ μΈν΄λ£¨λν κ²½μ°,
μμ ν
νλ¦Ώμ λΆλͺ¨ ν
νλ¦Ώμ λ³μλ€μ μμλ°μ΅λλ€.
λΆλͺ¨ ν
νλ¦Ώκ³Ό λ§μ°¬κ°μ§λ‘, μμ ν
νλ¦Ώλ Context
λ₯Ό μ°Έμ‘°νμ§ μμ΅λλ€.
λ§μ½ μΈν΄λ£¨λν λ λλ€μ λ³μλ₯Ό μ λ¬νλ€λ©΄,
μμ ν
νλ¦Ώμ λΆλͺ¨ ν
νλ¦ΏμΌλ‘λΆν° μμλ°μ λ³μλ€κ³Ό μ§μ μ λ¬λ°μ λ³μλ€μ ν©μ§ν©μ κ°κ² λλ©°,
κ°μ μ΄λ¦μ λ³μκ° μλ€λ©΄ μ§μ μ λ¬λ°μ λ³μκ° μ°μ ν©λλ€.
λ¨, μΈν΄λ£¨λλ ν
νλ¦Ώμμ Context::get()
λ±μ λ©μλλ₯Ό μ¬μ©νμ¬
μμ μ΄ μ§μ μ λ¬λ°μ§ μμ μΈλΆμ λ°μ΄ν°μ μ κ·Όνλ κ²μ λ§μ§λ μμ΅λλ€.
κ·Έλ¬ν μλλ₯Ό ν κ²½μ° λμ μ λκ² λ λΏμ
λλ€.
v1 νΈν λ¬Έλ²μμλ vars
μμ±μ μ¬μ©νμ¬ λ³μλ₯Ό μ λ¬ν μ μκ³ , μ‘°κ±΄λΆ μΈν΄λ£¨λμ ν¨κ» μΈ μλ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<include target="filename" vars="$vars" />
<include src="filename" if="$vars" vars="$vars" />
리μμ€ λ‘λ©¶
ν νλ¦Ώ λ¬Έλ²μ ν΅ν΄ λ€μν 리μμ€(μ μ )μ λ‘λ©μ μ§μν©λλ€.
<script>
λλ <link>
νκ·Έλ₯Ό μ¬μ©νμ¬ JS λ° CSS νμΌμ μ§μ λΆλ¬μ¬ μλ μμ΅λλ€.
κ·Έλ¬λ μ¬λ¬ λͺ¨λκ³Ό μ€ν¨ λ±μ μ‘°ν©νμ¬ μ¬μ©νλ λΌμ΄λ―Ήμ€μ νΉμ±μ,
ν
νλ¦Ώ λ¬Έλ²μ μ¬μ©νμ¬ μ½μ΄μμ 리μμ€λ₯Ό ν΅ν© κ΄λ¦¬νλλ‘ νλ©΄ μ¬λ¬ κ°μ§ μ₯μ μ΄ μμ΅λλ€.
- μ½μ΄μ CSS/JS μμΆ λ° ν©μΉκΈ° κΈ°λ₯κ³Ό μλμΌλ‘ μ°λλ©λλ€.
- SCSS, LESS νμΌμ λ‘λ©νλ©΄ μλμΌλ‘ μ»΄νμΌλκ³ , λ³μλ₯Ό μ λ¬ν μλ μμ΅λλ€.
index
μμ±μΌλ‘ λ‘λ© μμλ₯Ό μ‘°μ ν μ μμ΅λλ€.- μ΄λ―Έ λ‘λ©ν νμΌμ μΈλ‘λ©ν μ μμ΅λλ€.
CSS, SCSS, LESS¶
CSS 리μμ€λ₯Ό λ‘λ©νλ €λ©΄ @load
μ§μμλ₯Ό μ¬μ©ν©λλ€.
λ‘λ©ν νμΌμ κ²½λ‘λ μΈν΄λ£¨λμ λ§μ°¬κ°μ§λ‘ νμ¬ νμΌμ κΈ°μ€μΌλ‘ ν μλκ²½λ‘λ₯Ό μ¬μ©νλ κ²μ΄ μμΉμ΄μ§λ§,
νμμ ^
λ¬Έμλ‘ λΌμ΄λ―Ήμ€κ° μ€μΉλ λ£¨νΈ κ²½λ‘λ₯Ό μ°Έμ‘°ν μ μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@load ('styles.css')
@load ('styles.css', 'print', 20)
SCSSλ LESSλ λμΌν λ¬Έλ²μΌλ‘ λ‘λ©ν©λλ€. μ½μ΄μμ μλμΌλ‘ μ»΄νμΌνκ³ , λ³μλ₯Ό μ λ¬ν μλ μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@load ('../styles.less')
@load ('css/styles.scss', $vars)
νλΌλ―Έν°μ μμλ νμΌλͺ
, media, λ‘λ© μμ, λ³μ μμ΄λ©°, mediaμ λ‘λ© μμλ μλ΅ν μ μμ΅λλ€.
λ¨, mediaμ λ‘λ© μμλ κ°κ° λ¬Έμμ΄κ³Ό μ μλ‘ μ λ¬ν΄μΌ νλ©° λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
v1 νΈν λ¬Έλ²μ μ¬μ©νλ©΄ κ° νλΌλ―Έν°μ μν μ λ λΆλͺ
νκ² ννν μ μμ΅λλ€.
(src
μμ±μ target
μΌλ‘ μ¨λ μ μ μΈμν©λλ€.)
ννμμ λΆλͺ
ν μ΄μ μ΄ μμΌλ―λ‘, μ΄λ¬ν λ¬Έλ²μ μ¬μ©μ κ΅³μ΄ νΌν΄μΌ ν νμλ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<load src="^/modules/foo/bar/styles.scss" media="screen" vars="$vars" />
<load target="../../../styles.css" index="-3" />
JS¶
CSSμ λμΌν λ¬Έλ²μΌλ‘ λ‘λ©ν©λλ€. λ¨, media
λμ type
μ μ λ¬νκ³ , λ³μλ₯Ό μ λ¬νλ κΈ°λ₯μ μμ΅λλ€.
type
μ μ€ν¬λ¦½νΈλ₯Ό μ€νν μμΉλ₯Ό μλ―Ένλλ°, κΈ°λ³Έκ°μ head
μ
λλ€.
head
: HTML μμ€μ<head>
λΆλΆμ μ½μ λμ΄, λ³Έλ¬Έ λ‘λ© μ μ€νλ©λλ€.body
: HTML μμ€μ<body>
νλ¨μ μ½μ λμ΄, λ³Έλ¬Έ λ‘λ© ν μ€νλ©λλ€.
[v2 μ κ· λ¬Έλ²]
@load ('script.js')
@load ('dir/script.js', 'body')
@load ('^/common/js/script.js", 'body', 10)
v1 νΈν λ¬Έλ²λ μ¬μ©ν μ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<load src="script.js" type="body" index="10">
<load target="../../foo/script.js" />
JS νλ¬κ·ΈμΈ¶
CKEditor λ± common/js/plugins/
ν΄λμ μλ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ‘λ©ν©λλ€.
JSλ₯Ό λ‘λ©νλ λ°©λ²κ³Ό λμΌνλ©°, λΌμ΄λ―Ήμ€ μ€μΉ μμΉλ₯Ό κΈ°μ€μΌλ‘ νλ κ²½λ‘λ§ μ ννκ² μ§μ ν΄ μ£Όλ©΄ λ©λλ€.
(plugin.load νμΌμ΄ μλ λλ ν 리κΉμ§λ§ μ μΌλ©΄ λ©λλ€.)
[v2 μ κ· λ¬Έλ²]
@load ('^/common/js/plugins/ckeditor/')
[v1 νΈν λ¬Έλ²]
<load src="^/common/js/plugins/ckeditor/" />
μΈμ΄ νμΌ¶
νΉμ λͺ¨λ, λλ νΉμ ν ν΄λμ μ μ₯λμ΄ μλ μΈμ΄ νμΌμ λ‘λ©ν©λλ€.
μΈμ΄ νμΌλ€μ΄ μ μ₯λμ΄ μλ λλ ν 리λ₯Ό μ§μ ν©λλ€.
[v2 μ κ· λ¬Έλ²]
@load ('../lang/')
[v1 νΈν λ¬Έλ²]
<load src="../lang/" />
κΈ°ν¶
XML JS νν° λ‘λ©μ μ§μνμ§ μμ΅λλ€. ν
νλ¦Ώ λ¬Έλ² v2λ₯Ό μ¬μ©νμ¬ μ μνλ μ κ· μλ£μμλ
λ£°μ
(ruleset)μ΄λ XML JS νν°λ₯Ό μ¬μ©νλ κ²μ κΆμ₯νμ§ μμ΅λλ€.
μ΄λ―Έ λ‘λ©ν 리μμ€λ₯Ό μΈλ‘λ©νλ €λ©΄ @unload
μ§μμ λλ <unload>
νκ·Έλ₯Ό μ¬μ©ν©λλ€.
[v2 μ κ· λ¬Έλ²]
@unload ('foo/bar.js')
[v1 νΈν λ¬Έλ²]
<unload src="foo/bar.js" />
HTML μμ± μμ± λμ°λ―Έ¶
class λͺ©λ‘ μμ±¶
쑰건μ λ°λΌ HTML νκ·Έμ κ°κ° λ€λ₯Έ class
λͺ©λ‘μ λμ΄ν΄μΌ νλ μΌμ΄ μμ£Ό μμ΅λλ€.
κΈ°μ‘΄μ ν
νλ¦Ώμμλ class
μμ± μ€κ°μ ifλ¬Έμ λΌμλ£κ±°λ,
λ€μν κ²½μ°μ μμ ν΄λΉνλ μ¬λ¬ μμ±κ°μ 미리 μ€λΉν΄ λλ λ±μ λΆνΈμ΄ μμμ΅λλ€.
Blade μ€νμΌμ ν
νλ¦Ώ λ¬Έλ²μ @class
μ§μμλ₯Ό μ¬μ©νμ¬ class
λͺ©λ‘μ μμ½κ² μμ±νλ λ°©λ²μ μ 곡ν©λλ€.
<div @class([
'project-item',
'project-complete' => $is_complete,
'featured' => $is_featured,
'awarded' => AwardModel::isAwarded($project),
])></div>
@class
μ§μμμ νλμ λ°°μ΄μ μ λ¬ν©λλ€.
μ΄ λ°°μ΄μλ class
λͺ
μ΄ λ¨μν κ°μΌλ‘ λ€μ΄ μμ μλ μκ³ , ν€/κ° ννλ‘ λ€μ΄ μμ μλ μμ΅λλ€.
μ μμμ project-item
μ²λΌ λ¨μν κ°μΌλ‘ λ€μ΄ μλ class
λͺ
μ κ·Έλλ‘ μΆλ ₯λ©λλ€.
λ°λ©΄, ν€/κ° ννλ‘ λ€μ΄ μλ κ²μ κ°μ΄ μ°ΈμΈ κ²½μ°μλ§ μΆλ ₯λ©λλ€.
μ°ΈμΈμ§ κ±°μ§μΈμ§λ λ°°μ΄μ λ£μ λ³μλ ν¨μμ κ°μ λ°λΌ νλ¨νλ―λ‘, μ΄λ€ λ‘μ§μ΄λΌλ μ μ©ν μ μμ΅λλ€.
λ§μ½ μμ μ½λμμ $is_complete
μ $is_featured
κ° μ°Έμ΄κ³ , λ§μ§λ§ μ‘°κ±΄μ΄ κ±°μ§μ΄λΌλ©΄
μλμ κ°μ κ²°κ³Όκ° μΆλ ₯λ κ²μ
λλ€.
<div class="project-item project-complete featured"></div>
style μμ± μμ±¶
μμ λΉμ·νκ² @style
μ§μμλ₯Ό μ¬μ©νμ¬ style
μμ±μ μμ±ν μ μμ΅λλ€.
<div @style([
'background-color: white',
'border: 2px' => $thickBorder,
'border: 1px' => $thinBorder,
'border-radius: 4px' => $isRound,
])></div>
λ§μ½ μμ μ½λμμ $thinBorder
λ§ μ°Έμ΄λΌλ©΄, μλμ κ°μ κ²°κ³Όκ° μΆλ ₯λ κ²μ
λλ€.
<div style="background-color: white; border: 1px"></div>
λ¨, λ°λμ νμν κ²½μ°λ₯Ό μ μΈνλ©΄ μ€νμΌμ λ³λμ CSS λλ SCSS νμΌμμ μμ±νλ κ²μ κΆμ₯ν©λλ€.
λΆλ¦¬μΈ μμ± μμ±¶
<input type="checkbox" checked>
μμ checked
μ κ°μ μμ±μ λΆλ¦¬μΈ(boolean) μμ±μ΄λΌκ³ ν©λλ€.
μΌλ°μ μΌλ‘ κ°μ κ°μ§μ§ μκ³ , κ°μ κ°μ§λ€ ν΄λ checked="checked"
μ κ°μ΄ μ΄λ¦μ λ°λ³΅ν λΏμ΄λ©°,
κ°κ³Ό κ΄κ³μμ΄ μμ±μ΄ μ‘΄μ¬νλμ§ μ νλμ§, 0κ³Ό 1λ§μΌλ‘ μνλ₯Ό ꡬλΆνκΈ° λλ¬Έμ
λλ€.
ν
νλ¦Ώ λ¬Έλ² v1μμλ |cond=""
λ¬Έλ²μ μ¬μ©νμ¬ μ΄λ° μμ±λ€μ μ½κ² μΌκ³ λ μ μμμ΅λλ€.
ν
νλ¦Ώ λ¬Έλ² v2μμλ κ°μ λ¬Έλ²μ μ§μν©λλ€.
cond
λμ if
, when
, unless
λ₯Ό μ¬μ©νμ¬ λ κ°κ²°νκ² νννκ±°λ 쑰건μ λ€μ§μ μλ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<input type="checkbox" checked|cond="$is_checked">
<input type="text" disabled="disabled"|cond="$is_disabled">
<select>
<option value="1" selected|cond="$val == 1">ONE</option>
<option value="2" selected|cond="$val == 2">ONE</option>
<option value="3" selected|cond="$val == 3">ONE</option>
</select>
κ·Έλ¬λ λ κ°κ²°ν Blade μ€νμΌμ λ¬Έλ²λ μ§μν©λλ€.
μ¬μ©λ²μ μμμ λ³Έ @class
μ λΉμ·νλ,
λΆλ¦¬μΈ λ¬Έλ²μμλ μ°ΈμΈμ§ κ±°μ§μΈμ§ νλ¨ν μ μλ νλμ λ³μλ ννμλ§ μ λ¬νλ©΄ λ©λλ€.
[v2 μ κ· λ¬Έλ²]
<input type="checkbox" @checked($is_checked)>
<input type="text" @disabled($is_disabled)>
<select>
<option value="1" @selected($val == 1)>ONE</option>
<option value="2" @selected($val == 2)>ONE</option>
<option value="3" @selected($val == 3)>ONE</option>
</select>
λΉμ·νκ² νμ©ν μ μλ μ§μμλ‘λ @checked
, @selected
, @disabled
, @readonly
, @required
κ° μμ΅λλ€.
κ°κ° μ΄λ¦κ³Ό κ°μ HTML μμ±μ λμν©λλ€.
λͺ¨λ HTML νΌμμ μ
λ ₯λμ μνλ₯Ό λ³κ²½νλ λ° νν μ¬μ©νλ μμ±λ€μ
λλ€.
Blade μ€νμΌμ λ¬Έλ²μ΄ μ§μνμ§ μλ μμ±μ 쑰건μ κ±Έμ΄μΌ νλ€λ©΄,
μμ κ°μ v1 νΈν λ¬Έλ²μ΄λ ifλ¬Έμ μ¬μ©ν μ μμ΅λλ€.
PHP μ½λ μ¬μ©¶
λΌμ΄λ―Ήμ€ ν νλ¦Ώ v2μμ PHP μ½λλ₯Ό μ§μ μ€ννλ λ°©λ²μ 3κ°μ§κ° μμ΅λλ€.
첫째λ Blade λ°©μμΌλ‘, @php
@endphp
μ§μμ μ¬μ΄μ PHP μ½λλ₯Ό μμ±νλ κ²μ
λλ€.
[v2 μ κ· λ¬Έλ²]
@php
Hello::world();
$foo = 'bar';
@endphp
λμ§Έλ ν
νλ¦Ώ λ¬Έλ² v1μμ μ¬μ©νλ λ°©μμΌλ‘, {@ ... }
μμ PHP μ½λλ₯Ό μμ±νλ κ²μ
λλ€.
μ€κ΄νΈλ₯Ό μ¬μ©νλ λ¬Έλ²μ νΉμ±μ, μ€κ΄νΈλ₯Ό ν¬ν¨νλ μ½λλ μμ±ν μ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
{@
Hello::world();
$foo = 'bar';
}
μ
μ§Έλ PHP μΈμ΄μμ κΈ°λ³Έ μ 곡νλ <?php ?>
νκ·Έλ₯Ό μ¬μ©νλ κ²μ
λλ€.
[PHP κΈ°λ³Έ λ¬Έλ²]
<?php
Hello::world();
$foo = 'bar';
?>
μΈ κ°μ§ λ°©λ²μ 100% λμΌν ν¨κ³Όλ₯Ό λ³μ΅λλ€.
ν
νλ¦Ώ λ¬Έλ² v1κ³Ό λ¬λ¦¬, μ΄λ€ λ°©λ²μ μ¬μ©νλλΌλ λͺ¨λ λ³μλ Context
λ₯Ό μ°Έμ‘°ν©λλ€.
(μΈν΄λ£¨λμ λ³μλ₯Ό μ λ¬νμ¬ ν΄λΉ λ³μλ§ μ¬μ©νλλ‘ κ°μ ν κ²½μ° μ μΈ)
μ£Όμ¶
μΌλ°μ μΈ HTML μ£Όμμ κ²°κ³Όλ¬Όμ κ·Έλλ‘ μΆλ ₯λ©λλ€.
κ²°κ³Όλ¬Όμ ν¬ν¨λμ§ μλ μ£Όμμ μμ±νλ €λ©΄ μλμ λ κ°μ§ λ¬Έλ² μ€ νλλ₯Ό μ¬μ©νλ©΄ λ©λλ€.
μ΄λ¬ν μ£Όμμ ν
νλ¦Ώ ν΄μ κ³Όμ μμ μμ λ©λλ€.
[Blade νΈν λ¬Έλ²]
{{-- μ΄ μ£Όμμ μΆλ ₯λμ§ μμ΅λλ€ --}}
[v1 νΈν λ¬Έλ²]
<!--// μ΄ μ£Όμμ μΆλ ₯λμ§ μμ΅λλ€ -->
λΆκ° κΈ°λ₯¶
ν΄λμ€λͺ μ€μ¬ μ°κΈ°¶
λΌμ΄λ―Ήμ€ νλ μμν¬μ μ£Όμ λͺ¨λλ€μ΄ λ€μμ€νμ΄μ€λ₯Ό λμ
νλ©΄μ,
ν΄λΉ κΈ°λ₯μ κ°μ Έλ€κ° μ°κΈ° μν΄ νΈμΆν΄μΌ νλ ν΄λμ€λͺ
μ΄ μ μ κΈΈμ΄μ§κ³ μμ΅λλ€.
λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νλ λͺ¨λμ΄λΌλ©΄ use
ꡬ문μ μ¬μ©νμ¬ μ μ ν μ΄λ¦μΌλ‘ alias μ²λ¦¬ν μ μμ§λ§,
λͺ¨λ ν
νλ¦Ώμ μ μ μ€μ½νμμ μ€νλλ―λ‘ μ΄ λ°©λ²μ μ¬μ©ν μ μμ΅λλ€.
κ·Έλμ λΌμ΄λ―Ήμ€ ν νλ¦Ώ v2 λ¬Έλ²μ ν΄λμ€λͺ μ alias μ²λ¦¬νλ λ°©λ²μ μ 곡ν©λλ€.
[v2 μ κ· λ¬Έλ²]
@use('Rhymix\Framework\Filters\HTMLFilter', 'HTMLFilter')
@use('Rhymix\Framework\Mail', 'Mail')
<article>
{!! HTMLFilter::clean($content) !!}
</article>
@php
$mail = new Mail();
@endphp
μ΄ κΈ°λ₯μ v1 νΈν λ¬Έλ² ννλ‘λ μ 곡λ©λλ€. λ¨, v1μ μλ κΈ°λ₯μ΄λ―λ‘ μ€μ λ‘ v1κ³Ό νΈνλμ§λ μμ΅λλ€.
[v1 νΈν λ¬Έλ²]
<use class="Rhymix\Framework\Filters\HTMLFilter" as="HTMLFilter" />
<use class="Rhymix\Framework\Mail" as="Mail" />
<article>
{HTMLFilter::clean($content)|noescape}
</article>
<?php
$mail = new Mail();
?>
μ€μ λ‘ μ μ μ€μ½νμ aliasκ° μμ±λλ κ²μ μλλλ€.
ν
νλ¦Ώ λ΄μμ ν΄λΉ λͺ
μΉμ μ¬μ©νλ λΆλΆμ μΌκ΄ μΉννλ κ²λΏμ΄λ―λ‘,
μ μ¬ν μ΄λ¦μ μ¬λ¬ κ°μ§ μ¬μ©νλ©΄ μ€μλν μ μμ΅λλ€.
리μμ€ κ²½λ‘ μλ μ‘°μ ¶
ν
νλ¦Ώ μμ€μ ν¬ν¨λ μ΄λ―Έμ§, λμμ λ±μ μλκ²½λ‘λ ν΄μ κ³Όμ μμ μ λκ²½λ‘λ‘ λ³νλμ΄,
μ€μ νμ΄μ§κ° νμλλ λ€μν URLμμ νμ μ νν κ²½λ‘λ₯Ό κ°λ¦¬ν€κ² λ©λλ€.
μλ₯Ό λ€μ΄ modules/board/skins/example/list.blade.php
μμ μλμ κ°μ μ½λλ₯Ό μ¬μ©νμλ€λ©΄
<img src="img/icon.png" alt="μμ΄μ½" />
ν΄μ λ° μΆλ ₯ κ³Όμ μμ μλμ κ°μ΄ λ³νλ©λλ€.
<img src="/modules/board/skins/example/img/icon.png" alt="μμ΄μ½" />
λ°λΌμ λ μ΄μμμ΄λ μ€ν¨ μ μμλ μ¬μ©μκ° κ·Έ μλ£λ₯Ό μ νν μ΄λ€ κ²½λ‘μ μ€μΉν μ§ μ κ²½μ°μ§ μκ³ ,
μλ£ λ΄λΆμ λλ ν 리 κ΅¬μ‘°λ§ κ°μνμ¬ μ½λλ₯Ό μμ±νλ©΄ λ©λλ€.
μ΄ κΈ°λ₯μ λλΆλΆμ src
μμ±, srcset
μμ±, poster
μμ±μ μ μ©λ©λλ€.
νΌ νλ μλ μ£Όμ ¶
ν
νλ¦Ώ λ¬Έλ² v2λ <form>
νκ·Έμ μ¬μ©μκ° μμ±νμ§ μμ νλλ₯Ό μμλ‘ μ£Όμ
νμ§ μμ΅λλ€.
μνμ§ μλ νλ μ£Όμ
μ λ§κΈ° μν rx-autoform
λ° no-error-return-url
μμ±λ νμνμ§ μμ΅λλ€.
λ¨, @csrf
μ§μμλ₯Ό μ¬μ©νμ¬ CSRF ν ν°μ ν¬ν¨νλ hidden inputμ μμ½κ² μ£Όμ
ν μ μμ΅λλ€.
<form action="{\RX_BASEURL}" method="post">
@csrf
...
</form>
JSON μΆλ ₯¶
@json
μ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό JSONμΌλ‘ μΆλ ₯ν μ μμ΅λλ€.
json
μΆλ ₯ νν°λ₯Ό μ¬μ©νλ κ²κ³Ό λμΌν ν¨κ³Όμ
λλ€.
HTMLμ μΌλΆλ‘ μΆλ ₯νλμ§, μλ°μ€ν¬λ¦½νΈ λ³μλ‘ μΆλ ₯νλμ§ μλμΌλ‘ νλ¨νμ¬
κ°κ° λ¬Έλ§₯μ λ§λ ννλ‘ μΈμ½λ©ν©λλ€.
μλ₯Ό λ€μ΄ HTML μμ±μμλ "
λ₯Ό "
λ‘ μΈμ½λ©ν΄μΌ νμ§λ§, JS λ³μμμλ "
λ₯Ό κ·Έλλ‘ λ‘λλ€.
[HTML λ¬Έλ§₯]
<div class="foo" data-params="@json($params)"></div>
[JS λ¬Έλ§₯]
<script>
const params = @json($params);
</script>
λ²μλ¬Έ λ‘λ©¶
@lang
μ μ¬μ©νμ¬ νμ¬ μ¬μ©μ€μΈ μΈμ΄μ λ²μλ¬Έμ μ½κ² λΆλ¬μ¬ μ μμ΅λλ€.
λΌμ΄λ―Ήμ€μ lang()
μ μ ν¨μμ λμΌν κΈ°λ₯μΌλ‘, λ€λ₯Έ λͺ¨λμ μΈμ΄ νμΌλ λΆλ¬μ¬ μ μκΈ° λλ¬Έμ
v1 ν
νλ¦Ώμμ μμ£Ό 보μ΄λ {$lang->foo}
λ³΄λ€ κ°λ ₯ν©λλ€.
μΌλ°μ μΈ λ°©λ²μΌλ‘ μ¬μ©ν κ²½μ°, ν΄λΉ λ©μμ§λ₯Ό μ μΈν λͺ¨λμ΄ μμ§ λ‘λ©λμ§ μμλ€λ©΄ λ²μμ΄ λμ§ μμ΅λλ€.
@lang('msg_file_not_found')
κ·Έλ¬λ μλμ κ°μ΄ λͺ¨λλͺ
μ μ§μ νμ¬ μ¬μ©νλ©΄, file λͺ¨λμ΄ λ‘λ©λμ§ μμλλΌλ κ°μ λ‘λ© ν λ²μν μ μμ΅λλ€.
νΉμ κ²½λ‘μ μΈμ΄ νμΌμ λ³λλ‘ λΆλ¬μ€λ ν¨μλ μ§μμλ₯Ό μ¬μ©ν νμκ° μλ κ²μ
λλ€.
@lang('file.msg_file_not_found')
URL μμ±¶
@url
μ μ¬μ©νλ©΄ getUrl()
λ₯μ ν¨μλ₯Ό μ½κ² νΈμΆν μ μμ΅λλ€.
λ¬Έλ§₯μ λ§κ² μΈμ½λ©λ κ²°κ³Όλ₯Ό μΆλ ₯ν©λλ€.
μ κ· μλ£μμλ μ°κ΄λ°°μ΄ ννλ₯Ό μ¬μ©ν κ²μ κΆμ₯ν©λλ€.
@url('')
@url('act', 'dispMemberInfo')
@url('', 'mid', $mid, 'act', 'dispBoardWrite')
@url(['mid' => $mid, 'act' => 'dispBoardWrite'])
μμ ― μ½μ ¶
@widget
μ μ¬μ©νλ©΄ νμ¬ μμΉμ μμ ―μ μ½μ
ν μ μμ΅λλ€.
μμ λ°©μμ μμ ― νκ·Έλ₯Ό μ¬μ©νλ κ²λ³΄λ€ κ°κ²°νκ³ , μμ ―μ μ λ¬ν λ³μλ₯Ό 컀μ€ν°λ§μ΄μ§νκΈ°λ νΈλ¦¬ν©λλ€.
@widget('content', $args)
μμ ―μ μ λ¬νλ $args
λ λ°°μ΄μ΄λ μ€λΈμ νΈμ¬μΌ νκ³ , skin
λ± ν΄λΉ μμ ―μ λ λλ§νλ λ° νμν
λ³μλ€μ ν¬ν¨νκ³ μμ΄μΌ ν©λλ€.
κΈ°ν μ μ©ν μ§μμ¶
@dump, @dd¶
@dump
λ₯Ό μ¬μ©νλ©΄ 1κ° λλ μ¬λ¬ κ°μ λ³μλ₯Ό var_dump()
ν©λλ€. νν "λ³μλ₯Ό μ°μ΄λ³Έλ€"λΌκ³ νλ λλ²κΉ
μμ
μ
λλ€.
@dump($var);
@dump($foo, $bar)
@dd
λ₯Ό μ¬μ©νλ©΄ λ³μλ₯Ό var_dump()
ν ν κ°μ μ’
λ£ν©λλ€. ("Dump and Die"μ μ€μλ§μ΄λΌκ³ ν©λλ€.)
@dd($var)
@dd($foo, $bar)
@once ... @endonce¶
@once ... @endonce
μ λλ¬μΈμΈ ν
νλ¦Ώ μ½λλ 루νλ μΈν΄λ£¨λλ‘ μΈν΄ μ¬λ¬ λ² νΈμΆλλλΌλ 1λ²λ§ μ€νλ©λλ€.
νΉμ ν λΌμ΄λΈλ¬λ¦¬λ₯Ό λ‘λ©νλ μ½λ λ±, μ¬λ¬ λ² μ€νλμ΄μλ κ³€λν κ²½μ°μ μ¬μ©ν μ μμ΅λλ€.
@once
... μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ‘λ© λλ μ΄κΈ°ν μμ
...
@endonce
@error ... @enderror¶
νΉμ ν μ΄λ¦μ validation μλ¬κ° μλ κ²½μ°λ₯Ό μλ―Ένλ 쑰건문μ
λλ€.
νμμ @else
λ @elseif
λ₯Ό λΌμλ£μ μ μμ΅λλ€.
[v2 μ κ· λ¬Έλ²]
@error ('modules/foo/tpl/1')
μλ¬κ° μμ΅λλ€.
@enderror
μμ μ½λλ νν μ¬μ©νλ μλμ μ½λμ λμΌν κΈ°λ₯μ λλ€.
[v1 μ½λ μμ]
<!--@if($XE_VALIDATOR_ID == 'modules/foo/tpl/1' && $XE_VALIDATOR_MESSAGE)-->
μλ¬κ° μμ΅λλ€.
<!--@endif-->
μ€μ μλ¬ λ©μμ§ λ΄μ©μ μ¬μ ν $XE_VALIDATOR_MESSAGE
λ³μμ λ΄κ²¨ μμ΅λλ€.
@verbatim ... @endverbatim¶
@verbatim ... @endverbatim
μ λλ¬μΈμΈ λΆλΆμ ν
νλ¦Ώ μ½λλ ν΄μνμ§ μμ΅λλ€.
@verbatim
@if ($foo)
{{ $bar }}
@endif
@endverbatim
μμ μμμμ 쑰건문μ μ€νλμ§ μκ³ , $bar
λ³μμ λ΄μ©μ΄ μΆλ ₯λμ§λ μμ΅λλ€.
λ§μΉ μ΄ λ§€λ΄μΌμ²λΌ ν
νλ¦Ώ μ½λκ° κ·Έλλ‘ μΆλ ₯λ©λλ€.
ν
νλ¦Ώ μ½λ κ·Έ μ체λ₯Ό νλ‘ νΈμλμ μ λ¬νλ €κ³ νλ κ²½μ° μ μ©νκ² μ¬μ©ν μ μμ΅λλ€.
@fragment ... @endfragment¶
@fragment ... @endfragment
μ λ€λ¬μΈμΈ ν
νλ¦Ώ μ½λλ
ν
νλ¦Ώμ μ»΄νμΌνκ³ μ€νν λλ λ³λ€λ₯Έ νΉμ μμ΄ κ·Έλλ‘ μΆλ ₯λμ§λ§,
μ€νμ΄ λλ ν ν΄λΉ λΆλΆλ§ λ³λλ‘ μΆμΆν μ μμ΅λλ€.
@fragment ('foo')
μ΄ λΆλΆλ§ μΆμΆν΄ λ³Όκ²μ
@endfragment
@fragment ('bar')
μ΄ λΆλΆλ λ°λ‘ κ°μ Έμ¬ μ μμ΄μ
@endfragment
$template = new Rhymix\Framework\Template('dir', 'filename');
$output = $template->compile();
$foo = $template->getFragment('foo')
$bar = $template->getFragment('bar')
@push, @prepend, @stack¶
@push
μ @prepend
λ @fragment
μ²λΌ μΆλ ₯λ¬Όμ μΌλΆλΆμ μΆμΆνλ λ° μ¬μ©νμ§λ§,
νλμ μ΄λ¦μΌλ‘ νλμ λ΄μ©λ§ μ μ₯ν μ μλ @fragment
μ λ¬λ¦¬,
κ°μ μ΄λ¦μΌλ‘ μΆμΆν λ΄μ©μ κ³μ λ§λΆμΌ μ μμ΅λλ€.
@push ('foo')
μ΄ λ΄μ©μ μΆκ°ν κ²μ.^^
@endpush
@push ('foo')
μ΄ λ΄μ©λ μΆκ°νκ³ μΆμ΄μ~
@endpush
@push ('foo')
μ΄ λ΄μ©λ μμ΄μ!
@endpush
μ΄λ κ² μ¬λ¬ μ°¨λ‘ λ΄μ©μ μΆκ°ν ν, @stack
μ μ¬μ©νμ¬ κ°μ Έμ¬ μ μμ΅λλ€.
@stack ('foo')
μ΄λ κ² νλ©΄ μ§κΈκΉμ§ μμΈ λ΄μ©μ΄ λͺ¨λ μΆλ ₯λ©λλ€.
μ΄ λ΄μ©μ μΆκ°ν κ²μ.^^
μ΄ λ΄μ©λ μΆκ°νκ³ μΆμ΄μ~
μ΄ λ΄μ©λ μμ΄μ!
@prepend
λ λΉμ·ν κΈ°λ₯μ΄μ§λ§, @push
μ λ¬λ¦¬ λ΄μ©μ μμ λΌμλ£μ΅λλ€.
@prepend
λ‘ μΆκ°ν λ΄μ©μ @stack
μ νΈμΆνμ λ μμμΌλ‘ λμ΅λλ€.
κ°μ μ΄λ¦μΌλ‘ @push
μ @prepend
λ₯Ό λ²κ°μ μ¬μ©νμ¬
μ΄λ€ κ²μ λ€μ, μ΄λ€ κ²μ μμ λΌμλ£λλ‘ ν μλ μμ΅λλ€.
@pushIf
μ @prependIf
λ 쑰건λΆλ‘ λ΄μ©μ μΆμΆν©λλ€.
@pushIf ($condition, 'foo')
μ‘°κ±΄μ΄ μ°Έμ΄μ΄μΌ μ΄ λ΄μ©μ΄ μΆκ°λ©λλ€.
@endPushIf
@prependIf ($condition, 'foo')
μ‘°κ±΄μ΄ μ°Έμ΄μ΄μΌ μ΄ λ΄μ©μ μμ λΌμλ£μ΅λλ€.
@endPrependIf
@pushOnce
μ @prependOnce
λ μ΄λ―Έ μΆκ°ν λ΄μ©μ μ€λ³΅μΌλ‘ μΆκ°νμ§ μμ΅λλ€.
Laravelμμλ CSS, JS λ‘λ©νλ μ½λλ₯Ό @push
λ‘ μΆκ°νκ³ ,
λ§μ§λ§μ λ μ΄μμμμ @stack
μΌλ‘ ν λ²μ λΆλ¬μ€λ λ°©λ²μ μΆμ²ν©λλ€.
κ·Έλ¬λ λΌμ΄λ―Ήμ€μμλ CSS, JS 리μμ€λ₯Ό κ΄λ¦¬νλ λ€λ₯Έ λ°©λ²μ΄ μμΌλ―λ‘,
μ΄λ° μ©λλ‘ @stack
μ μ¬μ©ν νμλ μμ΅λλ€.
λ―Έμ§μ κΈ°λ₯¶
ν
νλ¦Ώ λ¬Έλ² v2λ Blade 10.xμ λ¬Έλ²κ³Ό μ§μμλ₯Ό λλΆλΆ κ·Έλλ‘ λ°λ₯΄κ³ ,
λΌμ΄λ―Ήμ€μ νμν μ§μμμ v1 νΈν λ¬Έλ²μ μΆκ°νμ΅λλ€.
λ¨, Laravel Bladeλ₯Ό κ·Έλλ‘ μ¬μ©νλ κ²μ μλλΌλ μ μ μ μν΄μΌ ν©λλ€.
PHP μ§μ λ²μ λ¬Έμ , μλ‘ λ€λ₯Έ μΆμ²μ μ¬λ¬ λͺ¨λκ³Ό μ€ν¨ λ±μ μ‘°ν©νμ¬ μ¬μ©νλ λΌμ΄λ―Ήμ€μ νΉμ±,
Context
λ³μ μ°Έμ‘° λ¬Έμ , μΌλΆ v1 λ¬Έλ² μ μ§ λ±μ μ΄μ λ‘
Laravel νλ μμν¬μ μ½λλ₯Ό κ·Έλλ‘ μ¬μ©νκΈ°μλ μ΄λ €μμ΄ μμ΄,
"Blade μ€νμΌ"μ λ¬Έλ²λ§ μ°¨μ©νκ³ μ€μ μ»΄νμΌλ¬λ μ체 ꡬννμ΅λλ€.
λ°λΌμ μΈλΆμ μΈ ν΄μ λ°©μμμ Laravel Bladeμ μ°¨μ΄κ° μμ μ μμ΅λλ€.
νΉν Blade 10.xμ κΈ°λ₯ μ€ ν
νλ¦Ώ μμ λ° μ»΄ν¬λνΈνμ κ΄λ ¨λ μ§μμλ μ μ©λμ§ μμμ΅λλ€.
@extends
, @yield
, @section
, @show
, @inject
, @slot
λ±μ΄ μ¬κΈ°μ ν΄λΉλ©λλ€.
νλμ κ°λ°νμ΄ νλμ μ½λλ² μ΄μ€λ₯Ό ν΅ν© κ΄λ¦¬νλ€κ³ κ°μ νλ λλ€μμ μΉ νλ μμν¬μ λ¬λ¦¬,
λΌμ΄λ―Ήμ€λ κ°κ°μ λͺ¨λκ³Ό μ€ν¨μ λ
립μ μΌλ‘ κ°λ°νκ³ λ
립μ μΌλ‘ λ°°ν¬ν μ μμ΄μΌ ν©λλ€.
μ λ¬Έ κ°λ°μκ° μλ μ¬μ©μλ μλ£ μ μμκ° λ§κΈ° λλ¬Έμ,
λ¨μ§ μ€ν¨μμ μ¬μ©ν μ»΄ν¬λνΈλ₯Ό μ μνκΈ° μν΄ λ³λμ .php
νμΌμμ ν΄λμ€λ₯Ό μ μΈν΄μΌ νκ±°λ
ν°λ―Έλμμ λͺ
λ Ήμ μ€νν΄μΌ νλ κ°λ° λ°©μμ λ°μλ€μ΄κΈ° κ³€λν©λλ€.
μ΄λ° νΉμ±μ κ³ λ €ν λ Laravel Bladeμ μ»΄ν¬λνΈ μ€κ³λ λΌμ΄λ―Ήμ€μ λ§μ§ μλ€κ³ νλ¨νμμΌλ©°,
μ μ ν λμμ λ§λ ¨ν λκΉμ§ μ»΄ν¬λνΈ κ΄λ ¨ κΈ°λ₯μ μ μ©μ 보λ₯ν©λλ€.
λ¨, μΈν΄λ£¨λμ λ³μ μ λ¬ κΈ°λ₯μ νμ©νμ¬
μλΉν λ
립μ μΈ μ»΄ν¬λνΈμ κ°μ ν
νλ¦Ώμ ꡬνν μ μμ΅λλ€.
ν΄λμ€λ₯Ό μ μΈνμ¬ μ¬μ©νλ€λ μ μμ μμ ―μ μν κ³Όλ κ²ΉμΉλ λ©΄μ΄ μμΌλ―λ‘,
볡μ‘ν κΈ°λ₯μ΄ νμν μ»΄ν¬λνΈλ μμ ―μ νμ©νλ κ²μ κΆμ₯ν©λλ€.