on
Laravel(라라벨) 기초 ( 5.0 ~ 5.3 )
Laravel(라라벨) 기초 ( 5.0 ~ 5.3 )
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"> Ok 할일 정보 할 일: 기 한:
6) Blade
: laravel에 포함 되어 있는 Template Engine
: 기본 View와 구분하기 위해 Blade Template 파일은 .blade.php의 확장자 사용
-- 변수 출력 : {{ $var }} 를 사용 ( 과 동일한 기능)
: XSS, Cross-Site Scripting의 악의적인 자바스크립트 동작 막기
Ok 할일 정보 작 업: {{ $task['name'] }} 기 한: {{ $task['due_date'] }}
-- 조건문 : 키워드 앞에 @를 붙여 준다.
1) 기존 php 코드
= 5) { ?> 는 5 보다 큽니다.
* php의 복잡한 코드는 가독성도 떨어지고, 실수할 여지가 많다. 2) Blade 조건문
@if ($num > 5) {{ $num }} 는 5 보다 큽니다. @else {{ $num }} 은 5보다 작습니다. @endif
7) Layout 상속
1) resources/views/layouts/master.blade.php
@yield('title') @yield('content')
* @yield : 자식 컨텐츠에 구현하도록 양보하는 키워드 ( @section 키워드로 구현 )
* @extends : 자식 페이지는 상속할 부모 템플릿을 extends 키워드로 지정
2) resources/views/task/list3.blade.php
@extends('layouts.master') @section('title') 할일 목록 @endsection @section('content') @foreach($tasks as $task) @endforeach
할 일 기 한 {{ $task['name'] }} {{ $task['due_date'] }}
@endsection
* 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
from http://printhelloworld.tistory.com/67 by ccl(A) rewrite - 2020-03-31 19:59:36