カテゴリ: Symfony 更新日: 2025/11/08

Symfonyのrenderメソッドを完全解説!Twigに変数を渡す方法を初心者向けに丁寧に解説

SymfonyでTwigに変数を渡す方法(renderメソッドの使い方)
SymfonyでTwigに変数を渡す方法(renderメソッドの使い方)

先生と生徒の会話形式で理解しよう

生徒

「Twigにデータを渡して表示したいんですけど、どうすればいいですか?」

先生

「Symfonyでは、コントローラの中でrenderメソッドを使ってTwigに変数を渡すことができますよ。」

生徒

「renderメソッドって初めて聞きました。初心者でも簡単に使えますか?」

先生

「もちろんです!では、具体的にどうやって使うのか順番に説明していきましょう。」

1. TwigとSymfonyの連携とは?

1. TwigとSymfonyの連携とは?
1. TwigとSymfonyの連携とは?

Symfony(サンフォニー)は、Twig(トゥイッグ)というテンプレートエンジンを使ってHTMLの画面を表示します。ただし、HTMLだけではデータを表示できません。コントローラ側からデータを渡して、それをTwigで受け取る必要があります。

このとき使うのが、renderメソッドです。renderとは「描画する」という意味で、テンプレートを表示するために使うSymfonyのメソッドです。

2. renderメソッドの基本的な使い方

2. renderメソッドの基本的な使い方
2. renderメソッドの基本的な使い方

Symfonyでは、コントローラクラスの中でrenderメソッドを使うことで、Twigのテンプレートを読み込み、そこに変数を渡すことができます。以下は基本の書き方です。


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class HelloController extends AbstractController
{
    #[Route('/hello', name: 'hello')]
    public function index(): Response
    {
        $name = '太郎';
        return $this->render('hello/index.html.twig', [
            'name' => $name,
        ]);
    }
}

この例では、$nameという変数に「太郎」という文字列を入れて、Twigのhello/index.html.twignameという名前で渡しています。

3. Twig側で変数を受け取って表示する

3. Twig側で変数を受け取って表示する
3. Twig側で変数を受け取って表示する

先ほどコントローラから渡されたname変数は、Twigテンプレート内で簡単に表示できます。次のように記述します。


<h1>こんにちは、{{ name }}さん!</h1>

{{ }}で囲むことで、変数の中身が表示されます。PHPのechoのような役割ですね。

4. 複数の変数をTwigに渡すには?

4. 複数の変数をTwigに渡すには?
4. 複数の変数をTwigに渡すには?

renderメソッドでは、複数の変数も同時に渡すことができます。配列の形でキーと値をセットにして指定します。


return $this->render('hello/index.html.twig', [
    'name' => '太郎',
    'age' => 30,
    'city' => '東京',
]);

これにより、Twigでは{{ name }}{{ age }}{{ city }}として使用できます。

5. 実行結果のイメージ

5. 実行結果のイメージ
5. 実行結果のイメージ

<h1>こんにちは、太郎さん!</h1>
<p>年齢:30歳</p>
<p>住所:東京</p>

このように、PHPで持っているデータをTwigに渡すことで、動的な画面表示が可能になります。

6. 配列やリストをTwigに渡す方法

6. 配列やリストをTwigに渡す方法
6. 配列やリストをTwigに渡す方法

配列やリストのような複数データもTwigに渡すことができます。例えば、好きな食べ物の一覧を表示したいときは以下のように書きます。


$foods = ['りんご', 'バナナ', 'カレー'];

return $this->render('hello/foods.html.twig', [
    'foods' => $foods,
]);

<ul>
  {% for food in foods %}
    <li>{{ food }}</li>
  {% endfor %}
</ul>

これでTwig上に一覧表示されます。SymfonyとTwigの連携で、リストデータの表示もスムーズです。

7. Twigに連想配列を渡すときの注意点

7. Twigに連想配列を渡すときの注意点
7. Twigに連想配列を渡すときの注意点

連想配列とは「キー:値」の形で情報をまとめたデータです。Twigではこのキーを使って値にアクセスできます。


$user = [
    '名前' => '山田花子',
    '年齢' => 28,
    '住所' => '大阪府'
];

return $this->render('user/profile.html.twig', [
    'user' => $user,
]);

<p>{{ user['名前'] }}</p>
<p>{{ user['年齢'] }}歳</p>
<p>{{ user['住所'] }}</p>

キーに日本語を使う場合、角カッコ([])でアクセスするのが確実です。

8. Twigで変数が渡っていないときの対処法

8. Twigで変数が渡っていないときの対処法
8. Twigで変数が渡っていないときの対処法

コントローラから変数が渡されていないと、Twigでエラーになることがあります。そのときは、defaultフィルターを使うと安全です。


<p>{{ name|default('ゲスト') }}さん、こんにちは!</p>

このように書くと、nameが存在しないときでも「ゲストさん」と表示され、エラーを防ぐことができます。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)