처음부터 차근차근

블레이드 템플릿과 데이터 넘기는 법, DB연결, Migration 본문

Framework/Laravel

블레이드 템플릿과 데이터 넘기는 법, DB연결, Migration

_soyoung 2022. 1. 14. 19:33
반응형

블레이드 템플릿이란

개발자는 항상 코드의 중복을 없애야한다.

그래서 중복되는 코드를 블레이드 템플릿을 사용하여 없애면 깔끔하고 유지보수하기 쉽게 관리할 수 있다.

블레이드 템플릿이란 라라벨에서 제공하는 템플릿 엔진이다.

블레이드는 뷰에서는 순수한 PHP 코드를 <?php ?>없이 @를 이용해 작성할 수 있다.

블레이드 뷰 파일은 .blade.php 형식의 파일 확장자를 사용하고,

resources / views 아래에 저장한다.

 

 

블레이드 템플릿 사용

레이아웃

레이아웃 파일(파일명.blade.php) 

@yield('content')
@yield('title', 'ksyHome')

@section('title')을 지정해 주지 않으면 기본값으로 ksyHome을 출력하겠다.

 

 

레이아웃 사용하는 파일(파일명.blade.php)

@extends('layouts.layout')

layouts 디렉토리 안에 있는 layout.blade.php파일을 사용하겠다는 뜻

 

@section('title')
    Hi there
@endsection

@yield('title')이 있는 곳에 'Hi there'이라는 값을 넣겠다는 뜻

 

@section('content')
    Hello Soyoung
@endsection

@yield('content')가 있는 곳에 'Hello Soyoung'이라는 값을 넣겠다는 뜻

 

코드 예시

layout.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@yield('title', 'ksyHome')</title>
</head>
<body>
    @yield('content')
</body>
</html>

 

home.blade.php

@extends('layouts.layout')

@section('title')
    Hi there
@endsection

@section('content')
    Hello Soyoung
@endsection

 

결과

 

php 코드 축약

<?php foreach ($titles as $title) {}?>
-->
@foreach ($titles as $title)
@endforeach


<?php echo $title;?>
-->
{{$title}}

{{ }} 이 <?php echo ?> 쓸 때보다 보안면에서 더 안전하다.

<?php echo ?>를 쓰면 안에 <script></script>같은 자바스크립트 코드를 쓰면 그대로 실행되는데, {{ }} 은 문자열로 받아드려서 출력한다.

 

 

데이터 넘기는 방법

Route::get('/', [HomeController::class, 'home']);
class HomeController extends Controller
{
    public function __invoke() {
        return "HomeController의 __invoke함수입니다.";
    } 

    public function home() {

        $titles = [
            'first title',
            'second title'
        ];

        return view('home', [ 'titles' => $titles ]);
    
        // 같은 코드
        //return view('home')->with(['titles' => $titles]);
        //return view('home')->withTitles($titles); 
    }
}

 

 

 

Migration이란

데이터베이스이 테이블과 컬럼을 만들 때 phpmyadmin이나 SQL Developer 같은 프로그램을 사용해서 만드는데 라라벨에서는 프로그램 사용없이 테이블을 만들 수 있는 기능을 제공한다.

그 기능이 Migration(마이그레이션)이다.

database / migrations 아래로 가보면 4개의 마이그레이션이 미리 만들어져 있다.(라라벨8 기준) 

 

 

 

마이그레이션 파일 내용

up() : php artisan migrate 칠 때 실행되는 명령어

down() : php artisan migrate:rollback 칠 때 실행되는 명령어

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

users라는 이름의 table을 만든다.

안에 있는 내용은 테이블의 컬럼.

$table->timestamps(); : create

Schema::dropIfExists('users');

'users' 테이블을 삭제한다.

 

 

 

마이그레이션 명령어

마이그레이션 생성

php artisan make:migration 마이그레이션명

 

마이그레이션 실행

php artisan migrate

 

직전 마이그레이션으로 되돌아가기 

php artisan migrate:rollback

 

모든 마이그레이션을 없애기(데이터베이스 초기화)

php artisan migrate:reset

 

migrate:reset 한후 처음 기본으로 제공됐던 마이그레이션 실행

php artisan migrate:refresh

 

마이그레이션 테이블

마이그레이션한 내용을 보여준다.

batch는 마이그레이션한(migrate명령 치는것) 순서이다.

 

반응형
Comments