PHP 프레임워크 – Laravel – 3 – 컨트롤러와 뷰

PHP 프레임워크 - Laravel - 3 - 컨트롤러와 뷰
PHP 프레임워크 – Laravel – 3 – 컨트롤러와 뷰

PHP 프레임워크 – Laravel – 컨트롤러와 뷰

안녕하세요~ 😊
이제 Laravel의 라우팅을 이해하셨다면, 다음 단계는 바로 **컨트롤러(Controller)**와 **뷰(View)**입니다!

Laravel에서는 라우팅이 ‘길 안내’ 역할이라면,
컨트롤러는 로직 처리, 뷰는 화면 표시를 담당하는 아주 중요한 축이죠.

오늘은 이 두 친구를 함께 살펴보면서,
MVC 패턴의 진짜 재미를 느껴보는 시간으로 만들어볼게요! 🚀


컨트롤러란 무엇인가요?

컨트롤러는 사용자의 요청을 받아서 필요한 데이터를 처리하고,
그 결과를 뷰에 전달하는 중간 관리자 역할을 합니다.

💡 비유하자면?

뷰는 고객에게 요리를 내어주는 웨이터이고,
컨트롤러는 주방장에게 요리를 지시하는 점장님 같은 역할이에요!


컨트롤러 생성 방법

Laravel에서는 artisan 명령어로 손쉽게 컨트롤러를 생성할 수 있어요!

php artisan make:controller PageController

app/Http/Controllers/PageController.php 파일이 생성됩니다.


컨트롤러 기본 구조

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PageController extends Controller
{
    public function home()
    {
        return view('home');
    }

    public function about()
    {
        return view('about');
    }
}

컨트롤러 안에는 다양한 메서드(기능)를 넣어서 라우트에서 호출할 수 있어요.


라우트에서 컨트롤러 연결하기

이제 routes/web.php에서 라우팅을 컨트롤러로 연결해볼게요.

use App\Http\Controllers\PageController;

Route::get('/', [PageController::class, 'home']);
Route::get('/about', [PageController::class, 'about']);

'/' 접속 시 home() 메서드가 실행되고,
/about 접속 시 about() 메서드가 실행됩니다.


뷰(View)란?

**뷰(View)**는 사용자가 보는 화면을 구성하는 HTML 부분이에요.
Laravel에서는 Blade 템플릿 엔진을 이용해서 효율적이고 깔끔하게 화면을 만들 수 있어요.

📂 뷰 파일 위치

모든 뷰 파일은 다음 경로에 저장돼요:

resources/views/

Blade 템플릿 파일 만들기

예를 들어 home 뷰를 만든다면:

resources/views/home.blade.php

<!DOCTYPE html>
<html>
<head>
    <xss-title>홈페이지</xss-title>
</head>
<body>
    <h1>Laravel에 오신 걸 환영합니다!</h1>
    <p>이 페이지는 Blade 템플릿으로 만들어졌어요 😊</p>
</body>
</html>

return view('home');은 이 home.blade.php 파일을 렌더링하게 됩니다.


Blade의 주요 문법

Blade는 PHP와 HTML을 섞기 좋게 만든 엔진이에요. 간결하면서도 파워풀하죠!

✅ 변수 출력

<h1>안녕하세요, {{ $name }}님!</h1>

XSS 방지 기능까지 포함되어 있어 안전하게 출력돼요.

✅ 조건문

@if($isLoggedIn)
    <p>환영합니다!</p>
@else
    <p>로그인이 필요합니다.</p>
@endif

✅ 반복문

@foreach($posts as $post)
    <li>{{ $post->title }}</li>
@endforeach

뷰에 데이터 넘겨주기

컨트롤러에서 뷰에 변수를 넘겨줄 수 있어요!

public function home()
{
    $name = '홍길동';
    return view('home', ['name' => $name]);
}
<!-- home.blade.php -->
<h1>안녕하세요, {{ $name }}님!</h1>

레이아웃 활용하기 (템플릿 재사용)

Laravel에서는 공통 레이아웃을 정의해두고,
각 페이지에서 내용을 삽입하는 방식으로 중복을 줄일 수 있어요!

resources/views/layouts/app.blade.php

<!DOCTYPE html>
<html>
<head>
    <xss-title>@yield('title')</xss-title>
</head>
<body>
    <header>
        <h1>My Laravel Site</h1>
    </header>

    <main>
        @yield('content')
    </main>

    <footer>
        <p>&copy; 2025</p>
    </footer>
</body>
</html>

resources/views/home.blade.php

@extends('layouts.app')

@section('title', '홈페이지')

@section('content')
    <p>이곳은 홈입니다. 반갑습니다!</p>
@endsection

이렇게 하면 전체 레이아웃은 유지하고, 개별 내용만 바꾸는 게 가능해요!


실전 예제: 컨트롤러와 뷰 연동

1. 컨트롤러 만들기

php artisan make:controller HelloController

2. 컨트롤러 메서드 작성

public function greet($name = '방문자')
{
    return view('greet', ['name' => $name]);
}

3. 라우트 연결

Route::get('/hello/{name?}', [HelloController::class, 'greet']);

4. 뷰 파일 만들기: resources/views/greet.blade.php

<h2>안녕하세요, {{ $name }}님!</h2>

/hello/철수 접속 시: “안녕하세요, 철수님!” 이 출력됩니다.


주의할 점 ✅

항목 설명
컨트롤러 클래스명 꼭 대문자로 시작 (PSR 표준)
Blade 파일명 .blade.php 확장자 필수
뷰 이름 호출 view('폴더.파일') 형태로 점(.)으로 구분
경로 오타 뷰 파일 경로 오타는 흰 화면 또는 에러 발생
데이터 넘기기 배열 또는 with() 메서드로 넘길 수 있음

요약 🎯

요소 설명
컨트롤러 요청을 처리하는 로직 담당
사용자에게 보여지는 HTML 화면
Blade Laravel의 템플릿 엔진, 간결하고 재사용성 좋음
데이터 전달 컨트롤러 → 뷰로 변수 전달 가능
레이아웃 @extends@yield로 템플릿 재사용 가능

마무리하며 😊

Laravel의 컨트롤러와 뷰는 웹 개발의 근간이 되는 MVC 패턴의 핵심입니다!
이 두 가지만 제대로 이해하면, Laravel 프로젝트의 70%는 이미 마스터한 거예요! 😎

라우팅으로 요청을 받고,
컨트롤러에서 데이터를 처리하고,
뷰에서 사용자에게 보여주는 이 구조
를 반복하면
훨씬 안정적이고 체계적인 웹 개발이 가능하답니다 💻✨

다음 시간에는 데이터베이스 연동과 Eloquent ORM에 대해 본격적으로 들어가볼게요!
그럼 오늘도 Laravel과 함께 즐거운 개발 되세요~! 🎉

답글 남기기