【laravel 입문】 루트, 컨트롤러, 템플릿 엔진의 기본 정리

6810 단어 PHPlaravel5

Route



루트는 사용자로부터의 요청을 수신하여 컨트롤러에 전달하는 역할과 (컨트롤러에 대해서는 후술), 컨트롤러로부터 수신한 정보를 사용자에게 반환하는 역할을 담당한다. 이른바 중개인.
소개 루트에 어떤 정보가 전달되고 브라우저에 어떤 정보가 표시되는지 본다.

테스트 1



route.php
Route::get('hello',function(){
    return '<html><body><h1>hello world</h1></body></html>';
});



테스트 2


resources/views/hello.php 를 이하의 내용으로 작성

hello.php
<html>
<head>
        <title>Sample</title>
</head>
<body>
<h1>hello world</h1>
<p><?php echo $message; ?></p>
</body>
</htm>
route.php 를 다음과 같이 편집

route.php
Route::get('/hello', function () {
    return view('hello', ['message' => 'hello!']);
});

결과


여기까지 이해



GET 메소드 중에는 사용자가 입력한 주소와 그에 따른 메소드가 쓰여져 있다. 예를 들어 /hello 에 액세스할 때 functuion() 가 실행되는 경우.function() 는 직접 html 문을 반환하거나 view 함수에서 다른 php 파일을 참조하여 반환 할 수 있습니다.

컨트롤러



컨트롤러란, 루트로부터 수신한 정보를 모델에 처리를 부탁하는 역할과, 모델로부터 수신한 정보를 뷰에 표시하는 역할이 있다.
컨트롤러는 $ php artisan make:controller [コントローラー名] 로 작성할 수 있다.

테스트 3


  • 컨트롤러를 만들기 전에 루트에 새로 만드는 컨트롤러를 작성하십시오.

  • route.php
    Route::get('hello','Hello_Controller@getIndex');
    
    [コントローラー名@メソッド名] 에서 컨트롤러의 메소드에 액세스할 수 있습니다.
  • 컨트롤러 작성$ php artisan make:controller Hello_Contoroller
  • 컨트롤러의 내용은 이하.

  • Hello_Contoroller.php
    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class Hello_Controller extends Controller
    {
        public function getIndex()
        {
          return view('hello');
        }
    }
    

    클래스는 자동 생성될 것이므로, 메소드만 추가.
    getIndex 메소드로, hello.php 의 파일명을 인수로 하는 view 함수를 돌려준다.
  • 방금 전의 hello.php 그럼, <p> 태그 안에서 $message , 오류가 발생합니다.
    그 때문에, 이 부분을 <p>hello controler</p> 정도로 해 둔다.

  • 결과





    템플릿


  • 상기의 방법이라면, 1 페이지 마다 html문을 기술하지 않으면 안 되기 때문에, larabel에서는 blade라고 하는 템플릿 엔진을 사용한다.
    아래의 layout.blade.php는 템플릿 파일입니다.

  • layout.blade.php
    <!DOCTYPE HTML>
    <html lang="ja">
    
    <head>
      <meta charset="utf-8">
      <title>@yield('title')</title>
    </head>
    
    <body>
      @section('sidebar')
    
      <div class="container">
        @yield('content')
      </div>
    </body>
    </html>
    
    

    child.php
    @extends('layout')
    @section('title', 'Page Title')
    
    @section('sidebar')
    
      <p>ここはメインのサイドバーに追加される</p>
    @endsection
    
    @section('content')
      <p>ここが本文</p>
    @endsection
    
  • @extend('layout')layout.blade.php 를 상속하는 것을 나타낸다.
  • 템플릿 파일의 @yield 부분에 하위 파일의 @section ~ @endsection 내의 설명이 삽입된다.

  • 결과



    좋은 웹페이지 즐겨찾기