본문 바로가기
IT/PHP

PHP/Laravel(5) 컨트롤러

by Sungjun_ 2020. 2. 21.

컨트롤러는 MVC 패턴의 구성 요소로 입력된 정보를 처리하고

모델을 호출하고 뷰를 생성하여 결과를 전달하는 역할을 수행합니다.

 

/* web.php */
<?php

Route::get('/', function(){
    $foods = [
        'Chicken',
        'Pie'
    ];
    return view('index',compact('foods'));
});

먼저 web.php에 위와 같이 작성합니다.

$foods 안에 치킨과 파이를 넣고 그 정보를 index.blade.php로 보내줍니다.

 

{{-- index.blade.php --}}
@extends('layouts.menu')

@section('title')
    Welcome
@endsection

@section('content')
<ul>
    @foreach ($foods as $food)
        <li>{{$food}}</li>
    @endforeach
</ul>
@endsection
<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>@yield('title', 'Lalavel')</title>
</head>
<body>
    <h1>@yield('title')</h1>
    @yield('content')
</body>
</html>

index.blade.php에 위와 같이 입력해줍니다.

아래 코드 블럭은 index.blade.php가 상속 받은 레이아웃 페이지입니다.

 

@section('content')에서 ul 태그를 사용하고 web.php 보낸 $foods를 foreach 문법으로 화면에 보여줍니다.

 

그랬을 때 이렇게 화면에 나오는 것을 확인할 수 있습니다.

 

이제 web.php에서 만든 $foods를 컨트롤러로 만들어 실행시켜 보겠습니다.

먼저 컨트롤러는 app >> Http >> Controllers 폴더 안에 있습니다.

폴더 안에 보시면 Controller.php 파일이 있는데 

이 파일 말고 새로 컨트롤러 파일을 만들어보겠습니다.

 

저는 vscode 에디터에 있는 터미널을 사용해 하겠습니다.

git bash를 쓰시는 분들이나 window cmd 사용하시는 분들도 똑같이 입력하시면 됩니다.

 

vscode 아래쪽에 있는 터미널에 입력하겠습니다.

php artisan make:controller 이것이 컨트롤러를 만드는 기본 명령어입니다.

그리고 php artisan make:controller ____ 밑줄 부분에 만드실 컨트롤러의 이름을 넣으시면 됩니다.

저는 php artisan make:controller FoodController 이렇게 만들겠습니다. 

엔터를 치면 Controller created successfully. 이렇게 문구가 나오고

 

컨트롤러 폴더에

이렇게 방금 만든 컨트롤러가 생성된 것을 볼 수 있습니다.

 

파일을 열어보면

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FoodController extends Controller
{
    //
}

이렇게 나오실텐데 web.php에서

$foods = [
        'Chicken',
        'Pie'
    ];
    return view('index',compact('foods'));

이 부분을 복사해 class안에 넣어줍니다.

 

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FoodController extends Controller
{
    public function Food(){
        $foods = [
            'Chicken',
            'PiePie'
        ];
        return view('index',compact('foods'));
    }
    
}

class 안에 저렇게 함수를 만들어 그 안에 넣어줍니다. 

함수의 이름은 저와 다르게 하셔도 상관 없습니다.

 

이제 web.php로 가서 다음과 같이 바꿔줍니다.

 

<?php

Route::get('/', 'FoodController@Food');

FoodController는 컨트롤러를 선택한 것이고 Food는 컨트롤러 안에 있는 함수를 선택했다고 생각하시면 됩니다.

 

이제 화면 출력이 제대로 되는지 새로고침을 해봅시다.

 

제대로 작동하는 것을 확인 할 수 있습니다.

 

 

 

이것으로 마치겠습니다.

'IT > PHP' 카테고리의 다른 글

PHP/Laravel(7) 모델  (0) 2020.02.21
PHP/Laravel(6) 데이터베이스 연결 및 생성  (0) 2020.02.21
PHP/Laravel(4) 컴포넌트&슬롯  (0) 2020.02.20
PHP/Laravel(3) blade 문법  (0) 2020.02.20
PHP/Laravel(2) welcome.blade.php  (0) 2020.02.19

댓글