laravel 로 배우는 서버사이드 #2
TRANSCRIPT
mkdir (make directory)
디렉토리를 생성하는 명령어
$�mkdir�~/Documents/test
mkdir�C:\test
C드라이브 아래에 test 라는 폴더를 생성 (윈도우는 드라이브부터 시작 합니다. C: 그리고 경로가 슬러시(/)가 아닌 키표시(역슬러시)입니다.)
~ 자신의 홈디렉토리의 Document 폴더에 test 라는 폴더 생성 ~은 홈디렉토리를 나타냅니다. (/Users/jamie)
cd (change directory)
cd�c:\test
cd ~/Document/test
C드라이브 test라는 폴더로 이동합니다.
(홈디렉토리) Document 의 test 폴더로 이동합니다.
cd (change directory)
cd�..
한칸 뒤로 나옵니다. 윈도우에서는 c:\ 로 맥에서는 Document 폴더로 이동합니다.
~
자기의 홈 디렉토리를 나타냅니다. (리눅스에서는 /home/아이디)
ex) 맥에서는 /Users/자신의 아이디 리눅스나 유닉스는 /home/jamie
하면 자신의 홈으로 이동합니다.cd�~�
cd�-
이전 디렉토리로 이동합니다.
절대경로와 상대경로
- 절대경로
/Users/jamie/Document
- 상대경로
cd�Document/test
만약 /Users/jamie 경로에 위치하고 있다면..
로 이동 가능
자동완성기능
cd�Use�
Use 까지만 누리고 ‘tab’ 버튼을 눌르면
cd�Users��
가 자동 완성됩니다. 폴더 파일명 모두 적용 됩니다.
명령어 사용시 오타를 최소화 해줍니다. 정말 필요하실 겁니다. !!
더 알고 싶다면
http://passing2.tistory.com/56
http://mactraining.tistory.com/148
Document root 디렉토리 권한 변경
sudo�chown�-R�{자신의로그인아이디}:staff�~/Documents/laravel-space/
폴더권한이 root (super 유저) 로 되어있기 때문에 자신의 소유로 변경해주는 작업입니다.
public 경로를 줄여봅시다.
<IfModule�mod_rewrite.c>�����RewriteEngine�On�
����RewriteRule�^(.*)$�public/$1�[L]�</IfModule>
전 실습에는 public 경로 까지 Document Root 로 잡았지만 국내 호스팅 시에는 그렇게 할 수 가 없습니다. 아파치 서버에서는 .htaccess 파일로 경로를 줄일 수(rewrite) 있습니다.
/Users/{자신의아이디}/Documents/laravel-space/abcd
cd�C:\laravel-space\abcd
.htaccess� 파일을 다음의 내용으로 생성해 줍니다.
Route 기본 구조경로를 만들어주는 작업
Route::get('/welcome/{id}',�'WelcomeController@showHello');
경로 컨트롤러 클래스 메소드http 메서드
app/Http/routes.php
Route 실습 1-1
php�artisan�make:controller�TestController
2. TestController 생성
cd�~/Documents/laravel-space/abcd
복사하는 방법이 아닌 “세련된” 방법으로 컨트롤러 생성
cd�C:\laravel-space\abcd
홈디렉토리로 이동
app/Http/Controllers/TestController.php 생성확인
1
2
3
Route 실습 1-2
Route::get('/test', 'TestController@getTestPage');
TestController 내용 깔끔하게 삭제4
5 app/Http/routes.php 다음라인 추가
컨트롤러 클래스 클래스의 메소드경로
Route 실습 1-3
����public�function�getTestPage()�����{���������return�"test�laravel";�����}
app/Http/Controllers/TestController.php 수정 다음라인 추가6
7 http://localhost/test
미들웨어
요청을 가로채서 원하는 기능을 넣을 수 있습니다.
클라이언트 요청
Route 리소스
유용한 사용자인지?? 이 사용자에게 알맞는 권한은?? … 공사중 인증확인 hook
Middleware
미들웨어 실습 1-1
php�artisan�make:middleware�ABCDMiddleware
홈 디렉토리로 이동
artisan 으로 ABCDMiddleware 생성
생성�파일�확인�
/app/Http/Middleware/ABCDMiddleware.php
1
2
3
미들웨어 실습 1-2
Route::get('/test/middleware',�['middleware'�=>�['abcd'],�function�()�{�����echo�‘요청�진행’;�}]);
/app/Http/routes.php
/app/Http/Kernel.php
����protected�$routeMiddleware�=�[�…,�
��������'abcd'�=>�\App\Http\Middleware\ABCDMiddleware::class�����];
$routeMiddleware 에 abcd 미들웨어를 추가합니다. 주의) 기존에 있던곳 아래 줄에 추가
4
5
미들웨어 실습 1-3
/app/Http/Middleware/ABCDMiddleware.php�파일 수정
����public�function�handle($request,�Closure�$next)�����{���������$param�=�$request->input(‘param’);���������if�(!empty($param))���������{�������������Log::info(‘미들웨어에서�처리’);�������������return�redirect('/test');���������}���������return�$next($request);�����}
use�Log;
다음라인 추가 (use Closure; 아래)
6
미들웨어 실습 1-4
http://localhost/test/middleware?param=haha
http://localhost/test/middleware
7 결과 확인
8 왜이렇게 되는 걸까요?
LOG 실습 1-1
Log::info('This�is�some�useful�information.');�Log::warning('Something�could�be�going�wrong.');�Log::error('Something�is�really�going�wrong.');
/config/app.php
use�Log;
클래스에 use Log 라고 입력해서 Log 라이브러리를 불러옵니다.
로그 형식
'debug'�=>�env('APP_DEBUG',�true),�
를 다음처럼 true 로 바꿉니다.
1
2
LOG 실습 1-2
$�tail�-f�$�tail�-f�~/Documents/laravel-space/abcd/storage/logs/laravel.log�
C:\laravel-space\abcd\storage\logs
laravel.log�파일을�열어�보시면�됩니다.
3 결과 확인
컨트롤러 이름 부여
Route::get('/test',�['as'�=>�'testname',�'uses'�=>�'TestController@getTestPage']);
as 키워드를 넣으면 컨트롤러가 ‘test’ 이름으로 지정됩니다..
Route::get('/test/contname',�function()�{�����return�redirect(route('testname'));�});
http://localhost/test/contname
1 /app/Http/routes.php다음라인 추가
2 /app/Http/routes.php다음라인 추가
3
파라미터 전달 실습1
����public�function�authUser($id,�$pass)�{���������if�(�$id�===�"jamie"�&&�$pass�===�"1234")�{�������������echo�"로그인�성공";���������}�else�{�������������echo�"로그인�실패";���������}�����}
/app/Http/Controllers/TestController.php��다음라인 추가
Route::get('/test/auth/{id}/{pass}',�'TestController@authUser');
/app/Http/routes.php1
2
파라미터 전달 실습2
3
주의 !! 실제 사이트에서 아이디와 패스워드를 주소로 넘기면 큰일나겠죠.
http://localhost/test/auth/jamie/1234
뷰 실습 1
Route::get('/test/view',�'TestController@getViewPage');
����public�function�getViewPage()�����{���������return�view('test');�����}
1 /app/Http/routes.php 다음라인 추가
2/app/Http/Controllers/TestController.php��다음라인 추가
뷰 실습 2
/resources/views/test.php
test.php 파일 추가
<!DOCTYPE�html>�<html>�<head�lang="en">�����<title>뷰테스트</title>�</head>�<body>�����<h1>이렇게�html을�수정합니다</h1>�����<p>샬라샬라</p>�</body>�</html>
3
데이터 전달 실습 1
/resources/views/test�test 폴더 생성
/resources/views/test/message.php�test.php 파일 추가
<!DOCTYPE�html>�<html>�<head�lang="en">�����<title>데이터�테스트</title>�</head>�<body>�����<h1>이런�메시지를��<?php�echo�$message;�?></h1>�</body>�</html>
1
2
데이터 전달 실습 2
Route::get('/test/view/{message}',�'TestController@viewMessage');
����public�function�viewMessage($message)�{���������return�view('test.message')->with('message',�$message);�����}
http://localhost/test/view/메시지를
3
4
5
데이터 전달 실습 3
/views/test/message.php
view('test.message')
test/message.php 구조는 ‘.’ 으로 접근합니다. 폴더가 더 많아진다면 ‘.’ 이 더 많아지겠죠.
라이프 사이클
http://xpressengine.github.io/laravel-korean-docs/docs/5.0/lifecycle/
public/index.phpKernel
(app/Http/Kernel.php)
Provider (config/app.php)
Route
providers 로딩
파일구조
http://xpressengine.github.io/laravel-korean-docs/docs/5.0/structure/