困っていること
以下のようにベーステンプレートを作成して、表示を切り替えるようにした場合、views/product/index.phpファイルにscriptタグを記述することで必要のないjavascriptを読み込ませないということも出来ると思います。
ですが、views/product/index.phpに記述した場合読み込み位置がfooterより前に来てしまいなんだか気持ち悪いです。
なにか他に気持ちよく読み込む方法はありますか?
それともそこまで気を使うことなく、ベーステンプレートのbodyタグ前で使う使わない関係なくまとめて読み込んでしまった方が良いのでしょうか?
アドバイスお願いします。
わかっていること
通常ですとページのレンダリング後にjavascriptファイルを読み込ませる狙いでbodyタグの終端に記述するというのは理解しています。
環境
生PHPでかかれたものを動かしながら機能追加している関係でフレームワークを使用していません。
PHPのバージョンは7.2.7です。
##コード
Template.php
PHP
1class Template 2{ 3 protected $base_template; 4 protected $page; 5 6 public function __construct($base_template, $data = array()) { 7 foreach ($data as $key => $value) { 8 $this->{$key} = $value; 9 } 10 11 $this->base_template = $base_template; 12 } 13 14 public function render($page, $data = array()) { 15 foreach ($data as $key => $value) { 16 $this->{$key} = $value; 17 } 18 19 $this->page = $page; 20 require $this->base_template; 21 } 22 23 public function content() { 24 require $this->page; 25 } 26}
コントローラー的な役割をしているファイル
PHP
1$params = array( 2products = $products 3); 4// 省略 5$template = new Template("../views/base.php"); 6$template->render("../views/product/index.php", $params);
base.php
PHP
1<!DOCTYPE html> 2<html> 3<head> 4</head> 5<body> 6<header></header> 7<div> 8 9<?php $this->content(); ?> 10 11</div> 12<footer></footer> 13</body> 14</html>
views/product/index.php
php
1<?php 2$products = $this->products; 3?> 4 5<h2>商品一覧</h2> 6<?php foreach($products as $product) : ?> 7// 省略 8<?php endforeach; ?>
回答1件
あなたの回答
tips
プレビュー