プロになるためのPHPプログラミング入門 8
以下書籍に付属するサンプルの実行環境を構築する。
「プロになるためのPHPプログラミング入門」(ISBN 978-4-7741-4972-1)
環境は以下記事のものを使用
「PHP:プロになるためのPHPプログラミング入門 サンプル環境構築」
PHP:8.3.30
MySQL:8.0.46
「プロになるためのPHPプログラミング入門」(ISBN 978-4-7741-4972-1)
環境は以下記事のものを使用
「PHP:プロになるためのPHPプログラミング入門 サンプル環境構築」
PHP:8.3.30
MySQL:8.0.46
1.5.6 HTML_Template_Flexyの制御構文
◆ {foreach:value, value}
◆ {foreach:variable, key, value}
◆ {if:variable}
◆ {if:method()}
◆ {foreach:variable, key, value}
Twigとさほど変わらない
{% for record in records %} {% endfor %}
{% for key, value in records %} {% endfor %}
{% for record in records %} {% endfor %}
{% for key, value in records %} {% endfor %}
◆ {if:variable}
◆ {if:method()}
Twigではif:method()は使えないが、さほど変わらない
{% if variable %}{% endif %}
{% if variable %}{% endif %}
サンプルの実行
◆ リスト 1-13 プログラムファイル (/ppa/f15flexyif.php)
実行したところエラーが発生した。
これは \$page->displayの第2引数に $obj (stdClassクラス) を渡しているため。
現在、第2引数は配列のみ指定可能。
なので全体的に配列に変更する。
テンプレートのif文もTwigの書式に修正
修正前:
修正後:
Fatal error: Uncaught TypeError: PpPage::display(): Argument #2 ($elem) must be of type array, stdClass given, called in /var/www/prophp_sample/www/ppa/p15flexyif.php on line 13 and defined in /var/www/prophp_sample/www/ppa/ppPage.php:26 Stack trace: #0 /var/www/prophp_sample/www/ppa/p15flexyif.php(13): PpPage->display('p15flexyif.html', Object(stdClass)) #1 {main} thrown in /var/www/prophp_sample/www/ppa/ppPage.php on line 26
これは \$page->displayの第2引数に $obj (stdClassクラス) を渡しているため。
現在、第2引数は配列のみ指定可能。
なので全体的に配列に変更する。
<?php
//! HTML_Template_Flexyのサンプル if制御構文で表示を制御する
require_once 'ppPage.php';
&page = new PpPage;
// &dobj = new stdClass();
&obj = array();
// &dobj->member = false;
&obj['member'] = false;
// 0: 非会員 1: 会員
&kaiin = 1;
if(&kaiin === 1){
// &dobj->member = true;
&obj['member'] = true;
}
&page->display('p15flexyif.html', &obj);
テンプレートのif文もTwigの書式に修正
修正前:
{if:member}
<h2>会員さまへのスペシャル情報</h2>
<p id="kaiin">
会員さまだけに、いちはやくお知らせする新商品情報です。
ご案内は<a href="#">こちら</a>からどうぞ。</p>
{end:}
修正後:
{% if member %}
<h2>会員さまへのスペシャル情報</h2>
<p id="kaiin">
会員さまだけに、いちはやくお知らせする新商品情報です。
ご案内は<a href="#">こちら</a>からどうぞ。</p>
{% endif %}
参考 (サンプル全体)
◆ リスト1-12 テンプレートファイル (p15flexyif.html) (P.70)
◆ リスト1-13 プログラムファイル (/ppa/f15flexyif.php) (P.71)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style TYPE="text/css">
<!--
h2 { margin-bottom:0; padding:5px; width:400px; color:#FFFFFF;
background-color:#267333; border-left: 12px solid #990026;
}
#kaiin { margin-top:0; padding:10px; width:400px; color: #000000;
background-color: #DCF0DF; border: 1px solid #267333;
}
-->
</style>
</head>
<body>
{% if member %}
<h2>会員さまへのスペシャル情報</h2>
<p id="kaiin">
会員さまだけに、いちはやくお知らせする新商品情報です。
ご案内は<a href="#">こちら</a>からどうぞ。</p>
{% endif %}
<h3>当店の人気商品</h3>
<ul>
<li>もりもりうどん</li>
<li>シャッキリドリンク</li>
<li>パパイア大福</li>
</ul>
</body>
</html>
◆ リスト1-13 プログラムファイル (/ppa/f15flexyif.php) (P.71)
<?php
//! HTML_Template_Flexyのサンプル if制御構文で表示を制御する
require_once 'ppPage.php';
$page = new PpPage;
$obj = array();
$obj['member'] = false;
// 0: 非会員 1: 会員
$kaiin = 1;
if($kaiin === 1){
$obj['member'] = true;
}
$page->display('p15flexyif.html', $obj);

0 件のコメント:
コメントを投稿