9
9

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 3 years have passed since last update.

【Laravel】コントローラの書き方

Posted at

概要

Laravelのコントローラ周辺について説明するよ
初心者向けの内容だよ
【Laravel】ルーティングの書き方と一緒に読むといいよ

コントローラ

コントローラとは、アプリケーションの処理を実装する部分だよ
クライアントからアクセスがあると、ルーティングによって、「○○というアドレスがきたら××という処理を行う」ということを決めるんだけど、この「××という処理」を書いているものがコントローラだよ
コントローラはクラスで表されていて、アクションというメソッドで書かれたものの中に具体的な処理を書いていく

基本

コントローラを作成するにはartisanコマンドを使う

% php artisan make:controller コントローラ名

コントローラ名は大文字で始まって、○○Controllerという名前にするのが一般的だね

% php artisan make:controller HelloController

例えば、上のようなコマンドを打つと以下のようなコントローラができる

app/Http/Controllers/HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    //
}

?>

※以下namespaceやuseは省略

例えばindexというアクションを書いてみる

app/Http/Controllers/HelloController.php
class HelloController extends Controller
{
    public function index()
    {
        $param = ['msg' => 'Hello'];
        return view('welcome', $param);
    }
}

アクション内でreturnするのは、主にview()やredirect()だね
view()は引数にテンプレート名やパラメータをとって、ブラウザにビューを表示させる
リダイレクトは例えばredirect('/hello/index')って感じ

上の例でいうと、indexの引数は何もないけれど、ルートにパラメータがある場合は引数を設定する
ただし、'http://.../index?id=1'のように?より後ろのパラメータは引数設定しても取得できない
この場合は以下のように引数にRequestオブジェクトの$requestを設定して、$request->idのように取得すればいい

app/Http/Controllers/HelloController.php
class HelloController extends Controller
{
    public function index(Request $request)
    {
        $param = ['msg' => 'Hello', 'id' => $request->id];
        return view('welcome', $param);
    }
}

おわり

今回はここまで
あんまり説明することがなかったね
それだけ単純だってこと
次はビューやテンプレートについて話していこうかな

9
9
0

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
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?