11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【laravel入門】ルート、コントローラー、テンプレートエンジンの基本まとめ

Posted at

#Route
ルートとは、ユーザーからのリクエストを受け取ってコントローラーに渡す役割と(コントローラーについては後述)、コントローラーから受け取った情報をユーザーへ返す役割を担う。いわば仲介人。
はじめにルートへどんな情報が渡され、ブラウザにどんな情報が表示されるのかを見る。

##テスト1

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

##テスト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!']);
});

結果
2.png

##ここまででわかること
GETメソッドの中には、ユーザーが入力したアドレスとそれに応じたメソッドが書かれている。例えば、/helloにアクセスした場合にfunctuion()が実行されるといった具合。
function()は直接html文を返すこともできれば、view関数で別のphpファイルを参照して返すこともできる。

#Controller
コントローラーとは、ルートから受け取った情報をモデルに処理をお願いする役割と、モデルから受け取った情報をビューに表示する役割がある。
コントローラーは、$ 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を出力していたが、今回は単にコントローラーでこのphpファイルを呼んでいるだけなので、$messageに値が代入されず、エラーになる。
    そのため、この部分を<p>hello controler</p>くらいにしておく。

####結果
1.png

#テンプレート

  • 上記の方法だと、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内の記述が挿入される。

####結果
1.png

11
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?