1
2

More than 3 years have passed since last update.

Symfonyの構造 routeとcontroller

Last updated at Posted at 2020-04-24
.
├── bin
│   └── console
├── composer.json // ここからプロジェクトが始まる
アプリに必要なすべてのサードパーティライブラリがリストされています。
├── composer.lock
├── config // configファイルが格納される
│   ├── bootstrap.php
│   ├── bundles.php
│   ├── packages
│   ├── routes
│   ├── routes.yaml
│   └── services.yaml
├── public // document root(front controllerと言われ、webサーバーによって実行されるファイル
│   └── index.php
├── src // PHP コードが格納される
│   ├── Controller
│   └── Kernel.php
├── symfony.lock
├── var
│   ├── cache
│   └── log
└── vendor
    ├── autoload.php
    ├── bin
    ├── composer
    ├── psr
    └── symfony

webFrameworkにある大切な2つの要素、routeとcontroller。

  • route
    • ページのURLを定義する。
  • controller
    • HTMLやJSONのように、そのページを作成するためのPHPコードを記述する場所。

コントローラーを使ってみる

routes.yamlを編集

初期からわかりやすく書かれています。

routes.yaml
#index:
#    path: /
#    controller: App\Controller\DefaultController::index

下記に書き換え

routes.yaml
index:
    path: /
    controller: App\Controller\QuestionController::homepage

コントローラーを作成

Controllerの中に新しいファイルを作ります。これはActionと言われるファイルです。ページを構築するための作業をさせることができます。データベースのクエリの作成、APIとの通信等々、、。

srcディレクトリに作成するクラスには、namespaceが必須です。
namespaceはApp\以下に作成する必要があります。
use Symfony\Component\HttpFoundation\Response;も必須です。

touch src/Controller/QuestionController.php
/src/Controller/QuestionController.php
<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class QuestionController
{
    public function homepage()
    {
        return new Response('Hello World');
    }
}

これでサーバーを立ち上げてページを表示してみると、Hello Worldと表示されているはずです。

参考

Route, Controllers & Responses! > Charming Development in Symfony 5 | SymfonyCasts
https://symfonycasts.com/screencast/symfony/route-controller#play

1
2
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
1
2