[ CakePHP ] CakePHP3+Smarty

CakePHP3でSmartyを使う。

CakePHP 3.5.12
Smarty 3.1.30

・CakePHP

・Smarty

1.CakePHPをcomposerを使ってインストール(公式のインストール)

composer self-update <span class="o">&amp;&amp;</span> composer create-project --prefer-dist cakephp/app my_app_name

2.Smartyのインストール

・ダウンロードして解凍したlibフォルダ以下を「vendor/smarty」にコピペ
(smartyフォルダは作成する)

・SmartyView.phpをとってくる

Smarty view class for CakePHP 3.0. Contribute to yukikikuchi/cakephp3-smartyview development by creating an account on GitHub.

・SmartyView.phpを「src/View」にコピペ

3.Controllerで使えるようにする

AppControllerに以下のよう追加

class AppController extends Controller
{
    public $viewClass = 'Smarty';
}

4.Smartyをつかう
・Controller
src/Controller/TestController.php

<!--?php 
namespace App\Controller;
class TestController extends AppController {
    public function index() {
        $this->set('message', 'test');
        $this->render('test');
    }
}

・View
src/Template/Test/test.tpl

{$message}

5.レイアウトなどもtplに

src/Template/Layout/default.tpl

{$this->element('header')}
{$this->fetch('content')}

elementは、「src/Template/Element/header.tpl」を読み込む
fetch(‘content’)は、Controllerないでの「$this->render(‘test’)」に置き換え

6.CakePHPのHelperをつかう(楽になるし)

・Paginator

Controller内で、paginateをやっておく。

public $paginate = ['limit' => 20];

tpl側はこんな感じ

<div class="pagination pagination-md block-cb">
    {$this->Paginator->prev('<')}
    {$this->Paginator->numbers()}
    {$this->Paginator->next('>')}
</div>

※ 基本的には、$this->xxxで使える