
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>© 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과 함께 즐거운 개발 되세요~! 🎉