Laravel(라라벨) 기초 요약
( 주로 Laravel 5.0~5.2 )
1) 어플리케이션 키
-- 세션 데이타를 암호화 하거나 laravel의 암호 패키지인 Crypt클래스로 암/복호화할떄 사용
-- composer나 installer가 프로젝트를 생성시에는 마지막 단계에서 키가 자동 생성됨
-- 임의로 직접 생성 : php artisan key:generate
-- 생성된 APP_KEY는 .env에 저장됨
: 여러대의 서버를 운영할때는 동일 .env 파일을 사용해야 함
-- 키가 설정되어 있지 않다면, config/app.php에 설정된 기본키를 사용(보안 취약)
2) 설정 파일
-- 데이타 베이스 : config/database.php
: key/value형식의 배열로 관리
ex) 'host' => env('DB_HOST', 'localhost')
: 환경 설정파일인 .env에서 DB_HOST항목을 읽고, 없으면 localhost를 사용
: 'default' => 'mysql' 의 수정으로 데이타베이스 변경
-- 파일을 위한 캐시 : config/cache.php
-- 메일 설정 : config/mail.php
-- laravel 환경 설정 : config/app.php
: 'debug' => env('APP_DEBUG', false) 에서 true로 변경하면
: 'timezone' => 'Asia/Seoul'
: 'url' => 'http://sample.com'
: 'locale' => 'ko' # 기본 locale은 en으로 되어 있음
: 'log' => env('APP_LOG', 'single') # 어플로그를 단일 파일로 로그는 남기는 설정
ex) storage/logs/laravel.log
3) laravel routing(라우팅)
-- url routing은 클라이언트가 요청한 url과 요청방식(get,post,delete,put등)에 따른 서버의 처리방식을 지정
-- Pretty UTL은 RESTful 기반의 웹서비스 제공
ex) index.php?action=view&article=123
ex) index.php/view/article/123
-- MVC패턴의 가장 앞에 위치하여 Front Controller라고 함
-- 라우팅 설정 : app/Http/routes.php ( Laravel 5.0~5.2 )
-- 라우팅 설정 : routes/web.php ( Laravel 5.3 )
--- 기본적인 라우트
Route::get('hello', function() {
return 'Hello!';
});
--- 계층 구조
Route::get('hello/world', function(){
return 'Hello World!';
});
--- 파라미터 전달
Route::get('hello/world/{name}', function($name){
return 'Hello World!' . $name ;
});
--- 파라미터 전달 ( null 또는 default )
Route::get('hello/world/{name?}', function($name=null){
return 'Hello World!' . $name ;
});
4) HTTP 응답
--- Response Class 사용
use Illuminate\Http\Response;
Route::get('hello/world/{name}', function(name) {
$response = new Response('Hello World', $name, 200);
return $response;
});
* use구문 선언과, new 객체를 통해 생성 번거롭다
--- response Helper Class 사용 ( use, new를 사용 안함)
Route::get('hello/world/{name}', function(name){
$response = new Response('Hello World', $name, 200);
return response('Hello World'. $name, 200)->header('Content-Type','text/plain');
});
* Method Chaining 가능 / 다중 헤더 설정
Route::get('hello/world/{name}', function(name){
$response = new Response('Hello World', $name, 200);
return response('Hello World'. $name, 200)
->header('Content-Type','text/plain')
->header('Cache-Control','max-age=' . 60*60. ".must-revalidate")
});
* JSON 데이타 형식
Route::get('hello/world/{name}', function(name){
$data = ['name' => 'Iron Man', 'gender'=>'Man'];
return response()->json($data);
});
5) Views
--- View Class 사용 ( 점(.)을 계층 구분 )
Route::get('hello/html', function() {
return View::make('hello.html');
});
* 위치 : resources/views/hello/html.php ( Views위치는 Laravel 5.0~5.3 동일 )
(laravel의 모든 view는 resources/view폴더에 위치 )
--- view Helper Class 사용
Route::get('hello/html', function() {
return view('hello.html');
});
});
--- view에 변수 전달
1) app/http/routes.php
Route::get('task/view', function() {
$task = ['name' => 'Task 1', 'due_date' => '2015-06-01 12:00:11'];
return view('task.view')->with('task', $task);
});
2) resource/views/task/view.php
< !doctype html >
< html lang="ko">
<head>
<meta charset="UTF-8">
<title>Ok</title>
</head>
<body>
<h1>할일 정보</h1>
<p> 할 일: <?= $task['name'] ?></p>
<p> 기 한: <?= $task['due_date'] ?></p>
</body>
</html>
6) Blade
: laravel에 포함 되어 있는 Template Engine
: 기본 View와 구분하기 위해 Blade Template 파일은 .blade.php의 확장자 사용
-- 변수 출력 : {{ $var }} 를 사용 ( <?= $var ?> 과 동일한 기능)
: XSS, Cross-Site Scripting의 악의적인 자바스크립트 동작 막기
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Ok</title>
</head>
<body>
<h1>할일 정보</h1>
<p> 작 업: {{ $task['name'] }} </p>
<p> 기 한: {{ $task['due_date'] }} </p>
</body>
</html>
-- 조건문 : 키워드 앞에 @를 붙여 준다.
= 5) { ?>는 5 보다 큽니다.
@if ($num > 5){{ $num }} 는 5 보다 큽니다.
@else{{ $num }} 은 5보다 작습니다.
@endif
7) Layout 상속
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset='utf-8'>
<title> @yield('title')</title>
<link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container'>
@yield('content')
</div>
</body>
</html>
* @extends : 자식 페이지는 상속할 부모 템플릿을 extends 키워드로 지정
@extends('layouts.master')
@section('title')
할일 목록
@endsection
@section('content')
@foreach($tasks as $task)
@endforeach
할 일 | 기 한 |
---|---|
{{ $task['name'] }} | {{ $task['due_date'] }} |
* Layout 상속 : https://www.lesstif.com/pages/viewpage.action?pageId=24445482
8) Blade 디버깅
- Blade Template : Blade Compiler -> Legacy PHP Code(파일명 변경됨) ->PHP Engine
- 컴파일된 파일 : storage/framework/view 폴더에 위치
원문 :
https://www.lesstif.com/pages/viewpage.action?pageId=28606603
쉽게 배우는 라라벨5 프로그래밍, 2016, Sep
'Web Tech. > PHP, Web' 카테고리의 다른 글
Laravel(라라벨) 5.3, Routes & Controllers for MVC (0) | 2017.01.06 |
---|---|
Laravel(라라벨) Homestead 사용하기 (0) | 2016.12.19 |
Laravel(라라벨)를 xampp에 설치하기 (0) | 2016.12.13 |
JavaScript 파일을 강제로 갱신하기 (0) | 2016.12.06 |
선호도 높은 16개의 웹 디자인 폰트(2007년 기준..ㅋ) (0) | 2016.11.28 |