on
[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