読者です 読者をやめる 読者になる 読者になる

masalibの日記

システム開発、運用と猫の写真ブログです

TWIGの調査4(list処理について)

PHP

Google App Engine for php
twigのテンプレートについての続きです

今回はlist処理部分について記載します

リスト処理

処理概要
webページをつくるなら基本中の基本の処理
のlist処理です
データとしてはUser データです
('ID', 'name', '詳細', '歳')

そちらのデータを表示したいと思います

作り
カテゴリ プログラム 詳細
php listpage.php 実行されるプログラム
twig base.html.twig デザインのベースのテンプレート(リストに継承します)
twig listpage.html.twig リストのテンプレートファイル
twig _userlistitem.html.twig ユーザーの1行のテンプレートファイル
ソース

listpage.php

<?php
require_once './vendor/autoload.php';
Twig_Autoloader::register();
//テンプレートの読み込み

$loader = new Twig_Loader_Filesystem("views");

$twig = new Twig_Environment($loader);
$template = $twig->loadTemplate("listpage.html.twig");

//データ
$users = array(
array("id" => "1","name" =>"masa","description" => "まさ、開発者です","age" => 35),
array("id" => "2","name" =>"hiromi","description" => "まさのです。嫁です","age" => 33),
array("id" => "10","name" =>"憲吾","description" => "まさの父です。鉄人です","age" => 66)
);
$page = array(
"description" => "サイトマップ作成ツール",
"keywords" => "sitemap,tool",
"title" => "ユーザー一覧",
"users" => $users
);
$template->display($page);
?>


テンプレートファイル
listpage.html.twig

 {% extends 'base.html.twig' %}

{% block body %}
<div class="row">
  <div class="col-lg-12">
  {% set columnname = ['ID', 'name', '詳細', '歳', '操作'] %}
  <table class="table table-bordered">
    <tr>
        {% for column in columnname %}
            <td>{{ column }}</td>
        {% endfor %}
    </tr>
  {% for user in users %}
<!--単純にリストで表示するパターン
      <tr>
          {% for column in row %}
              <td>{{ column }}</td>
          {% endfor %}
             <td>><a href="/user/edit.php?id={{ user.id }}" title="{{ user.name }}">  1編集</a></td>

      </tr>
-->
  {% include "_userlistitem.html.twig" %}
  {% endfor %}
  </table>
</div><!-- /col-lg-12 -->
</div><!-- /row -->
{% endblock %}


リストの1行目の
_userlistitem.html.twig

<tr>
    <td>{{ user.id }}</td>
    <td>{{ user.name }}</td>
    <td>{{ user.description }}</td>
    <td>{{ user.age }}</td>
    <td><a href="/user/edit.php?id={{ user.id }}" title="{{ user.name }}">  1編集</a></td>
</tr>
実行結果

f:id:masalib:20150901022608j:plain

それっぽくなりました

所管

・リストの1行をテンプレートにしました
 これはしなくてもよかったかも・・・
・データ取得の部分は、本来はDBです
(現在、はまっていてハードコードになっています)

参考サイト

akisi.tabiyaku.net