質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

Q&A

解決済

1回答

1802閲覧

Cakephp3でTwigを使いたい

nnahito

総合スコア2004

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

0グッド

0クリップ

投稿2018/05/17 12:05

はじめに

CakePHP初心者です。

やりたいこと

CakePHP3(3.6.3)で、Twigを使ってviewをレンダリングしたい。(素のPHPでechoするのが嫌)

わからないこと

TwigをCakePHPで動かす方法

参考にしたもの

https://github.com/WyriHaximus/TwigView
↑ページの途中までをやった(具体的には「Quick Start」の「Load Helpers」まで)

やったこと

とりあえず、{{ test }}を表示できるようにしようとしております。
composer require wyrihaximus/twig-view
の後、
composer installをしました。


php

1Plugin::load('WyriHaximus/TwigView', [ 2 'bootstrap' => true, 3]);

config/bootstrap.phpの一番下に追記


/src/Application.php

php

1namespace App\View; 2 3use WyriHaximus\TwigView\View\TwigView; 4 5class AppView extends TwigView 6{ 7}

に変更


public $helpers = ['Html', 'Form'];

/src/Controller/AppController.php
のinitializeに追加


Controllerで、

public function index() { $this->set('test',"test twig"); }

viewファイル(.ctp)で、

{{ test }}

表示は{{ test }}
まあ、そりゃそうか。。。

拡張子を.twigに変更
→500エラー

そもそも機能しているかを確認。
拡張子を.ctpに直し、

{% set foo = 'foo' %} {{ foo }}

そのまま表示される。(変数が展開とかではなく、全部文字として表示される)


これはなぜなのでしょうか。
何が足りていないのでしょうか。

ご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/05/17 12:25 編集

CakePHP詳しくはないんですけど、どの画面(コントローラ?)がどのビューを使うかって設定はどのようにされてますか?質問内容から読み取れませんでした。テンプレートファイルの置き場の指定とかもうまくいってるのでしょうか。Twigって.htmlだったような(.html以外も使えるかもしれませんが.htmlしか使ったことないので)
nnahito

2018/05/17 12:33 編集

コントローラーからのビューは読み出せます(通常の表示は確認済み)。拡張子は、.htmlでも、.twigでも、.twig.htmlでもsilexならですが動きました
m.ts10806

2018/05/17 12:33

じゃあ、TwigがTwigとして認識されてないだけですかね。通常のCakePHPのビューのAssign→テンプレート変数埋め込み だとどうなりますか?
nnahito

2018/05/17 12:35

ありがとうございます!ちょっと出てしまったので、戻ったらやってみます!
m.ts10806

2018/05/17 12:40

「Note: TwigView will look for its templates with the extension .twig and then for .tpl (deprecated).」とあるので.twigでエラーになったところから、認識されてないだけのように思います。
nnahito

2018/05/17 13:34

ありがとうございます。こちら、Layoutフォルダのファイルが「default.ctp」になっていたので、それを「default.twig」に変えたところ、エラーが変わりました。「Call to a member function loadTemplate() on null」
nnahito

2018/05/17 13:34

現在こいつを調査中です
nnahito

2018/05/17 13:44

すいません、原因がわかりました>< AppView.phpのクラスにinitializeをからメソッドで書いていて、こいつが邪魔していたようです
guest

回答1

0

ベストアンサー

TwigView plugin for CakePHP

てものみつけたけど微妙だな。。。これなら Symfony でいいんじゃ?

投稿2018/05/17 15:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2018/05/18 07:27

ありがとうございます。 こいつの、 class AppView extends TwigView の中のinitializeを消すのを忘れていたのが原因でした…… 自分はLaravel使いたかったのですが、Cakeでないとだめと言われ…… でもCakeにはテンプレートエンジンがないので、Silex時代を思い出し、Twigを採用しております。 今更smartyもどうかと思ったので…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問