처음부터 차근차근
블레이드 템플릿과 데이터 넘기는 법, DB연결, Migration 본문
블레이드 템플릿이란
개발자는 항상 코드의 중복을 없애야한다.
그래서 중복되는 코드를 블레이드 템플릿을 사용하여 없애면 깔끔하고 유지보수하기 쉽게 관리할 수 있다.
블레이드 템플릿이란 라라벨에서 제공하는 템플릿 엔진이다.
블레이드는 뷰에서는 순수한 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
![](https://blog.kakaocdn.net/dn/djqIFA/btrrdmCqV6W/9b5o2YQByJkluArjg5WJ41/img.png)
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명령 치는것) 순서이다.
'Framework > Laravel' 카테고리의 다른 글
Laravel Model 관계(Eloquent Relationship) (0) | 2022.01.19 |
---|---|
form validation과 jetstream, 로그인한 user 알아내기, 리소스 라우팅 (0) | 2022.01.18 |
package 다운로드, 파일 명명 규칙, 리소스 컨트롤러, form 값 받기, db update/delete/create, fillable (0) | 2022.01.16 |
artisan 명령어와 라우팅, 미들웨어, namespace, use (0) | 2022.01.15 |
Laravel 설치와 VSCode 세팅, 라라벨 프로젝트 구조 (0) | 2022.01.13 |