[TIL] PHP Laravel - View, Controller (뷰, 컨트롤러)

[TIL] PHP Laravel - View, Controller (뷰, 컨트롤러)

728x90

View

사용자의 응답이 어떻게 보여야 하는지 결정하는 파일

대부분 HTML 파일의 형태이지만 JSON, XML, 이메일과 같은 형식의 뷰 파일 생성 가능

// views/home.blade.php 또는 views/home.php 파일을 찾는다. Route::get('/', function(){ return view('home'); });

뷰에 데이터 넘기기

// View에서 데이터 바인딩 방법 // 첫번째 방법 Route::get('/', function(){ return view("welcome")->with('name','Foo'); }); // 두번째 방법 Route::get('/', function(){ return view("welcome",[ 'name' => 'Foo2', 'greeting' => '안녕하세요?' ]); });

라우트에서 바로 뷰 반환하기

Route::view('/', 'welcome', ['Users' => '사용자']);

Controller

HTTP 요청을 받아 애플리케이션의 로직을 처리하는 곳

아티즌 명령어를 사용해 컨트롤러를 생성

~ php artisan make:controller TaskController

- TaskController

myapp.test에 접속을 하면 TaskController의 index 메서드를 이용해 화면에 해당 메시지를 출력

리소스 컨트롤러

라라벨에서는 전통적인 REST/CRUD 컨트롤러(라라벨에서는 리소스 컨트롤러)가 존재

~ php artisan make:controller Controller이름 --resource

리소스 컨트롤러 메서드

index() : 리소스 목록을 반환

create() : 리소스 생성을 위한 폼 페이지를 출력

store(Request $request) : 리소스 생성을 처리

show($id) : 리소스 조회 페이지를 출력

edit($id) : 리소스 수정을 위한 수정 페이지를 출력

update(Request $request, $id) : 리소스 수정을 처리

destroy($id) : 리소스를 삭제

리소스 컨트롤러 연결

// routes/web.php Route::resource('works', Controller이름::class);

API 리소스 컨트롤러

RESTful API를 만들 때 사용

리소스 컨트롤러에서 입력 폼을 위한 화면을 제외하고 생성

php artisan make:controller Controller이름 --api

// routes/api.php Route::apiResource('works', Controller이름::class);

단일 액션 컨트롤러

Controller가 하나의 라우트만 처리해야 하는 경우 메서드를 새롭게 만들지 말고 php에서 제공해주는 __invoke() 메서드를 이용

__invoke() 메서드는 클래스 인스턴스의 '호출을 위임'하여 함수처럼 처리하는 메서드

// \App\Http\Controllers\TestController.php public function __invoke(){ // 사용자가 원하는 로직 } // routes\web.php Route::post('/test', TestController::class);

해당 주소로 접근 시 TestController의 __invoke() 메서드가 실행

폼 메서드 스푸핑

폼 메서드 스푸핑 (원래의 값이 아닌 다른 것으로 속이는 기법)

기본적인 form에서는 get, post만 허용하지만 경우에 따라 HTTP 메서드를 수동으로 정의해야 할 때가 존재

@method("DELETE") // routes/web.php Route::DELETE() 메서드와 매핑이 된다.

CSRF 보호

CSRF( cross site request forgery) 공격을 보호하는 방법으로 세션이 시작될 때 토큰을 이용해 각 요청마다 토큰을 전송해 토큰을 비교하는 방법

라라벨에서는 좀 더 쉽게 사용할 수 있게 존재

@csrf

728x90

from http://yoshikixdrum.tistory.com/239 by ccl(A) rewrite - 2021-02-04 18:00:51