๐Ÿฏ ๋ทฐ ๋ง›๋ณด๊ธฐ - ์ฒซ ๋ฒˆ์งธ ๋ทฐ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

Laravel ๋ทฐ๊ฐ€ ๋ญ”์ง€ 5๋ถ„๋งŒ์— ์ฒดํ—˜ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ HTML ํŽ˜์ด์ง€ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”

๐Ÿฏ ๋ทฐ ๋ง›๋ณด๊ธฐ

๋ชฉํ‘œ: 5๋ถ„ ์•ˆ์— ๋ทฐ๊ฐ€ ๋ญ”์ง€ ์ดํ•ดํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ HTML ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ!

๐Ÿค” ๋ทฐ(View)๊ฐ€ ๋ญ˜๊นŒ์š”?

์‹ค์ƒํ™œ ๋น„์œ 

๐ŸŽจ ํ™”๊ฐ€๊ฐ€ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ
ํ™”๊ฐ€(๋ผ์šฐํŠธ) + ์บ”๋ฒ„์Šค(๋ทฐ) = ์™„์„ฑ๋œ ๊ทธ๋ฆผ(์›นํŽ˜์ด์ง€)

๐Ÿ’ป ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
๋ผ์šฐํŠธ(์ปจํŠธ๋กค๋Ÿฌ) + ๋ทฐ(HTML ํ…œํ”Œ๋ฆฟ) = ์™„์„ฑ๋œ ์›นํŽ˜์ด์ง€

Laravel ๊ณต์‹ ์ •์˜

Laravel ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด:

๋ทฐ๋Š” ์ปจํŠธ๋กค๋Ÿฌ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ณผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด:

  • ๐Ÿ“„ HTML ํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž: HTML ๋ฌธ์„œ์˜ ํ…์ŠคํŠธ๋ฅผ ๋ชจ์•„์„œ ์‰ฝ๊ฒŒ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ๐ŸŽจ ๋””์ž์ธ ๋ถ„๋ฆฌ: ์ฝ”๋“œ์™€ ๋””์ž์ธ์„ ๋”ฐ๋กœ ๊ด€๋ฆฌ
  • ๐Ÿ”„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ: ์—ฌ๋Ÿฌ ๋ผ์šฐํŠธ์—์„œ ๊ฐ™์€ ๋ทฐ ์‚ฌ์šฉ
  • โš™๏ธ ํ…œํ”Œ๋ฆฟ ์—”์ง„: .blade.php๋ฅผ ์‚ฌ์šฉํ•ด ๋‹จ์ˆœ HTML๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต

๐Ÿ“ ๋ทฐ ํŒŒ์ผ ์œ„์น˜

๋ชจ๋“  ๋ทฐ ํŒŒ์ผ์€ resources/views ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

project/
โ”œโ”€โ”€ resources/
โ”‚   โ””โ”€โ”€ views/
โ”‚       โ”œโ”€โ”€ welcome.blade.php     โ† ๊ธฐ๋ณธ ํ™˜์˜ ํŽ˜์ด์ง€
โ”‚       โ”œโ”€โ”€ greeting.blade.php    โ† ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ํŽ˜์ด์ง€
โ”‚       โ””โ”€โ”€ ...

๐Ÿ”ง view() ํ—ฌํผ ํ•จ์ˆ˜

Laravel์—์„œ๋Š” view() ํ•จ์ˆ˜๋กœ ๋ทฐ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค:

// resources/views/greeting.blade.php ํŒŒ์ผ์„ ํ˜ธ์ถœ
return view('greeting');

// ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋ทฐ ํ˜ธ์ถœ
return view('greeting', ['name' => 'James']);

๐Ÿš€ ์ฒซ ๋ฒˆ์งธ ๋ทฐ ๋งŒ๋“ค์–ด๋ณด๊ธฐ (3๋ถ„ ์™„์„ฑ!)

1๋‹จ๊ณ„: ๋ทฐ ํŒŒ์ผ ์ƒ์„ฑ

resources/views/hello.blade.php ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>์ฒซ ๋ฒˆ์งธ ๋ทฐ</title>
    <style>
        body {
            font-family: Arial;
            text-align: center;
            padding: 50px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
        }
        .container {
            background: rgba(255,255,255,0.1);
            padding: 30px;
            border-radius: 15px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>๐ŸŽ‰ ๋‚ด ์ฒซ ๋ฒˆ์งธ Laravel ๋ทฐ!</h1>
        <p>์•ˆ๋…•ํ•˜์„ธ์š”! ๋“œ๋””์–ด ๋ทฐ๋ฅผ ๋งŒ๋“ค์—ˆ์–ด์š”!</p>
        <p>ํ˜„์žฌ ์‹œ๊ฐ„: </p>
    </div>
</body>
</html>

2๋‹จ๊ณ„: ๋ผ์šฐํŠธ์—์„œ ๋ทฐ ํ˜ธ์ถœ

routes/web.php์— ์ถ”๊ฐ€:

Route::get('/hello-view', function () {
    return view('hello');
});

3๋‹จ๊ณ„: ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธ

์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅ: http://localhost:8000/hello-view

๊ฒฐ๊ณผ: ์˜ˆ์œ ๊ทธ๋ผ๋””์–ธํŠธ ๋ฐฐ๊ฒฝ์˜ ์ฒซ ๋ฒˆ์งธ ๋ทฐ ์™„์„ฑ! ๐ŸŽ‰

๐ŸŽจ ๋ทฐ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ (2๋ถ„ ์ถ”๊ฐ€!)

๋ทฐ ํŒŒ์ผ์— ๋ณ€์ˆ˜ ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ

resources/views/greeting.blade.php:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>์ธ์‚ฌ ํŽ˜์ด์ง€</title>
    <style>
        body { font-family: Arial; padding: 50px; text-align: center; }
        .greeting { background: #f8f9fa; padding: 20px; border-radius: 10px; margin: 20px auto; max-width: 400px; }
    </style>
</head>
<body>
    <div class="greeting">
        <h1>๐Ÿ‘‹ ๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”!</h1>
        <p>๋‚˜์ด: ์„ธ</p>
        <p>์ทจ๋ฏธ: </p>
        <p>์˜ค๋Š˜์€ ์ž…๋‹ˆ๋‹ค!</p>
    </div>
</body>
</html>

๋ผ์šฐํŠธ์—์„œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ

Route::get('/greeting/{name}', function ($name) {
    return view('greeting', [
        'name' => $name,
        'age' => 25,
        'hobby' => '์ฝ”๋”ฉ',
        'today' => date('Y๋…„ m์›” d์ผ')
    ]);
});

ํ…Œ์ŠคํŠธ: /greeting/๊น€์ฒ ์ˆ˜ ์ ‘์†ํ•ด๋ณด์„ธ์š”!

๐ŸŽฎ ์‹ค์Šต ๋ฏธ์…˜ (5๋ถ„)

๋ฏธ์…˜ 1: ๋‚˜๋งŒ์˜ ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

  1. resources/views/profile.blade.php ์ƒ์„ฑ
  2. ๋ณธ์ธ์˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์œ ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
  3. ๋ผ์šฐํŠธ ์—ฐ๊ฒฐํ•˜๊ธฐ

ํ…œํ”Œ๋ฆฟ:

<!DOCTYPE html>
<html>
<head>
    <title>์˜ ํ”„๋กœํ•„</title>
    <style>
        /* ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ CSS ์Šคํƒ€์ผ! */
    </style>
</head>
<body>
    <div class="profile">
        <h1></h1>
        <p></p>
        <!-- ๋” ๋งŽ์€ ์ •๋ณด ์ถ”๊ฐ€! -->
    </div>
</body>
</html>

๋ฏธ์…˜ 2: ๋™์  ๋ฐฉ๋ช…๋ก ๋งŒ๋“ค๊ธฐ

Route::get('/guestbook/{message}', function ($message) {
    return view('guestbook', [
        'message' => $message,
        'visitor_ip' => request()->ip(),
        'visit_time' => now()->format('Y-m-d H:i:s')
    ]);
});

๋„์ „: /guestbook/์•ˆ๋…•ํ•˜์„ธ์š” ๊ฐ™์€ URL๋กœ ๋ฐฉ๋ฌธ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”!

๐Ÿ’ก ๋ทฐ vs ์ง์ ‘ HTML ๋น„๊ต

โŒ ๋ผ์šฐํŠธ์—์„œ ์ง์ ‘ HTML (๋‚˜์œ ์˜ˆ)

Route::get('/bad', function () {
    return '<html><head>...</head><body>...</body></html>'; // ๐Ÿ˜ฐ
});

โœ… ๋ทฐ ํŒŒ์ผ ์‚ฌ์šฉ (์ข‹์€ ์˜ˆ)

Route::get('/good', function () {
    return view('my-page'); // ๐Ÿ˜Š ๊น”๋”!
});

๋ทฐ ์‚ฌ์šฉ์˜ ์žฅ์ :

  • ๐Ÿ“ ์ฝ๊ธฐ ์‰ฌ์›€: HTML์ด ๋ณ„๋„ ํŒŒ์ผ๋กœ ์ •๋ฆฌ
  • ๐Ÿ”„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ: ์—ฌ๋Ÿฌ ๋ผ์šฐํŠธ์—์„œ ๊ฐ™์€ ๋ทฐ ์‚ฌ์šฉ
  • ๐ŸŽจ ๋””์ž์ด๋„ˆ ํ˜‘์—…: ๊ฐœ๋ฐœ์ž์™€ ๋””์ž์ด๋„ˆ๊ฐ€ ๋ถ„์—… ๊ฐ€๋Šฅ
  • ๐Ÿ› ๏ธ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด: ๋””์ž์ธ ๋ณ€๊ฒฝ์ด ์‰ฌ์›€

๐Ÿš€ ์™œ .blade.php๋ฅผ ์‚ฌ์šฉํ• ๊นŒ์š”?

HTML vs Blade.php ๋น„๊ต

๋‹จ์ˆœ HTML์˜ ํ•œ๊ณ„:

<!-- static.html -->
<h1>์•ˆ๋…•ํ•˜์„ธ์š” ๊น€์ฒ ์ˆ˜๋‹˜!</h1>
<p>์˜ค๋Š˜์€ 2024๋…„ 11์›” 19์ผ์ž…๋‹ˆ๋‹ค</p>

โŒ ๋ฌธ์ œ์ : ์ด๋ฆ„๊ณผ ๋‚ ์งœ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์š”

Blade ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ํž˜:

<!-- greeting.blade.php -->
<h1>์•ˆ๋…•ํ•˜์„ธ์š” ๋‹˜!</h1>
<p>์˜ค๋Š˜์€ ์ž…๋‹ˆ๋‹ค</p>

โœ… ํ•ด๊ฒฐ: ๋™์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์š”!

๐ŸŽฏ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ํ†ตํ•œ ๊ธฐ๋Šฅ ํ™•์žฅ

1. ๋ณ€์ˆ˜ ์ถœ๋ ฅ

    // ์•ˆ์ „ํ•œ ๋ณ€์ˆ˜ ์ถœ๋ ฅ
{!! $htmlContent !!}    // HTML ์ฝ”๋“œ ์ง์ ‘ ์ถœ๋ ฅ

2. ์กฐ๊ฑด๋ฌธ

@if($user->age >= 18)
    <p>์„ฑ์ธ์ž…๋‹ˆ๋‹ค</p>
@else
    <p>๋ฏธ์„ฑ๋…„์ž์ž…๋‹ˆ๋‹ค</p>
@endif

3. ๋ฐ˜๋ณต๋ฌธ

@foreach($posts as $post)
    <h3></h3>
@endforeach

4. ๋ ˆ์ด์•„์›ƒ ์ƒ์†

@extends('layouts.app')
@section('content')
    <h1>ํŽ˜์ด์ง€ ๋‚ด์šฉ</h1>
@endsection

๐Ÿ’ก ๋‹จ๊ณ„๋ณ„ ํ•™์Šต ์•ˆ๋‚ด

์ด๊ฒƒ์€ ๋ง›๋ณด๊ธฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค! ๐Ÿ“š

๐Ÿฏ ์ง€๊ธˆ ๋‹จ๊ณ„: ๋ทฐ๊ฐ€ ๋ญ”์ง€๋งŒ ์ดํ•ดํ•˜๋ฉด ์ถฉ๋ถ„ํ•ด์š” ๐ŸŒฑ ๋‹ค์Œ ๋‹จ๊ณ„: Blade ๋ฌธ๋ฒ•์„ ํ•˜๋‚˜์”ฉ ๋ฐฐ์›Œ๋ด์š” ๐Ÿš€ ๊ณ ๊ธ‰ ๋‹จ๊ณ„: ๋ณต์žกํ•œ ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ๊นŒ์ง€ ๋งˆ์Šคํ„ฐ!

๐Ÿ’ฌ ์„ค๋ช…: ๋ทฐ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ HTML์ด ์•„๋‹Œ blade.php๋กœ ํ•˜๋Š” ๊ฒƒ์€ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ํ†ตํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๊ฒƒ์€ ๋‚˜์ค‘์— ๋‹ค์‹œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ† ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

๐ŸŽ‰ 5๋ถ„๋งŒ์— ๋ทฐ ๋งˆ์Šคํ„ฐ!

์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€:

  • โœ… ๋ทฐ๊ฐ€ ๋ญ”์ง€ ์•Œ์•„์š”
  • โœ… ๋ทฐ ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”
  • โœ… ๋ผ์šฐํŠธ์™€ ๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์š”
  • โœ… ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด์š”

๐ŸŽฏ ๋‹ค์Œ ๋‹จ๊ณ„

๋” ๋ฉ‹์ง„ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด:

๐ŸŒฑ ์ดˆ๊ธ‰ - ๋ทฐ ๊ธฐ์ดˆ ์™„์ „ ๋งˆ์Šคํ„ฐ

  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•
  • ๋ธ”๋ ˆ์ด๋“œ ๋ฌธ๋ฒ• ๊ธฐ์ดˆ
  • ์‹ค์šฉ์ ์ธ ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

๐Ÿ’ก ํŒ: ๋ทฐ๋Š” ์›น ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ์ด์—์š”! HTML์„ ์˜ˆ์˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ ์  ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์„ธ์š”! ๐Ÿš€