プロになるためのPHPプログラミング入門 サンプル環境構築
リスト 1-1 文字エンコーディングをチェックするプログラムの例 (P.42)
リスト 1-2 マルチバイト文字列関数を使うプログラムの例 (P.43)
リスト 1-3 テンプレートファイル (P.55) リスト 1-4 プログラムファイル (P.56)
リスト 1-6 PpPageクラス (P.60)
リスト 1-7 テンプレートファイル (P.61)
リスト 1-8 プログラムファイル (P.62)
p15flexyform.php
リスト 1-2 マルチバイト文字列関数を使うプログラムの例 (P.43)
リスト 1-3 テンプレートファイル (P.55) リスト 1-4 プログラムファイル (P.56)
http://localhost:8080/prophp_sample/ppa/p15flexy.php
Twigへの置換が必要。
◆ p15flexy.html
◆ p15flexyif.html
Twigへの置換が必要。
◆ p15flexy.html
<html>
<body>
<h1>{{ val }}</h1>
</body>
</html>
◆ p15flexyif.html
<?php
require_once '../../vendor/autoload.php';
define('TEMPLATE_PATH', '../../templates');
$oobj = ['val' => '楽しい夏休み'];
$loader = new \Twig\Loader\FilesystemLoader(TEMPLATE_PATH);
$twig = new \Twig\Environment($loader);
echo $twig->render('p15flexy.html', $oobj);
リスト 1-6 PpPageクラス (P.60)
リスト 1-7 テンプレートファイル (P.61)
リスト 1-8 プログラムファイル (P.62)
Twigへの置換が必要。
◆ PpPage.php
◆ p15flexyform.html
◆ PpPage.php
<?php
require_once '../../vendor/autoload.php';
define('TEMPLATE_PATH', '../../templates'); // テンプレートファイルを置くフォルダ
//------------------------------//
//! ページ表示クラス
class PpPage {
protected $twig = null; // Twigオブジェクト
//! コンストラクタ
public function __construct() {
// E_DEPRECATEDとE_STRICTのメッセージを非表示にする
if(defined('E_DEPRECATED')){
error_reporting(error_reporting() & ~(E_DEPRECATED | E_STRICT));
}
$loader = new \Twig\Loader\FilesystemLoader(TEMPLATE_PATH);
$this->twig = new \Twig\Environment($loader, [
'cache' => '/var/cache',
'debug' => true,
]);
}
//! @param string $tmpl テンプレートファイル名
//! @param array $elem HTML要素出力データ
public function display($tmpl, array $elem = array()) {
echo $this->twig->render($tmpl, $elem);
}
}
◆ p15flexyform.html
selectへの項目(option)追加は {% for … %} によるループが必要
checked属性の追加は それぞれの項目で対応が必要
{{- kcomm -}} の "-" は前後のスペースを取り除くためのもの
checked属性の追加は それぞれの項目で対応が必要
{{- kcomm -}} の "-" は前後のスペースを取り除くためのもの
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ピザの注文</title>
</head>
<body>
<form name="pform" method="post" action="p15flexyform.php">
<p>生地の種類:
<select name="pbase" id="pbase">
{% for value, label in pkind %}
<option value="{{ value }}" {{ pbase == value ? 'selected' : '' }}>
{{ label }}
</option>
{% endfor %}
</select>
</p>
<p>サイズ:<br>
<input type="radio" name="psize" value="1" {{ psize == 1 ? 'checked': '' }}>大
<input type="radio" name="psize" value="2" {{ psize == 2 ? 'checked': '' }}>中
<input type="radio" name="psize" value="3" {{ psize == 3 ? 'checked': '' }}>小
</p>
<p>トッピング:<br>
<input type="checkbox" name="ptop[]" value="1" {{ '1' in ptop ? 'checked': '' }}>ペパロニ
<input type="checkbox" name="ptop[]" value="2" {{ '2' in ptop ? 'checked': '' }}>アンチョビ
<input type="checkbox" name="ptop[]" value="3" {{ '3' in ptop ? 'checked': '' }}>トマト
<input type="checkbox" name="ptop[]" value="4" {{ '4' in ptop ? 'checked': '' }}>ピーマン
<input type="checkbox" name="ptop[]" value="5" {{ '5' in ptop ? 'checked': '' }}>バジル
</p>
<p>お名前:<br>
<input name="kname" size="40" maxlength="30" value="{{ kname }}">
</p>
<p>連絡事項:<br>
<textarea name="kcomm" cols="{{ kcomm_attr.cols }}" rows="{{ kcomm_attr.rows }}">
{{- kcomm -}}
</textarea>
</p>
<input type="submit" value="注文する">
</form>
</body>
</html>
p15flexyform.php
<?php
require_once 'ppPage.php';
$elems = [
'pkind' => [
1 => 'モッチモチ! 弾力がある厚めの生地です',
2 => 'パリパリッ! 薄い生地がお好きな方はどうぞ',
3 => 'サクットロ~! サクッとした生地の中にはトロ~リチーズ'
],
'pbase' => 2,
'psize' => 3,
'ptop' => ['2', '3'],
'kname' => 'お名前を入力してください',
'kcomm' => '連絡事項を入力してください',
'kcomm_attr' => ['cols' => 40, 'rows' => 10]
];
$page = new PpPage;
$page->display('p15flexyform.html', $elems);


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