FuelPHP

FuelPHPのビュー

更新日:

今日はFuelPHPのビューについて調べてみたいと思います。FuelPHPのビューファイルは基本的に、『fule/app/views』フォルダ内にコントローラと同じ名前のフォルダを作成し、その中に格納します。また、ビューを呼び出す場合は、コントローラ名/メソッド名で呼び出します(例:fuel/app/views/sample1/index.phpを呼び出すには、sample1/index(indexは省略可)で指定します)。

1) それでは、実際に作成しながら調べてみたいと思います。『fuel/app/classes/controller/sample1.php』のindexメソッドを下記のように記述します。

public function action_index()
 {
 $data=array();
 $data['title']='<h1>Hello WinRoad徒然草!</h1>';
 $data['description']='<h2>FuelPHPのテストサイトです</h2>';
 //静的メソッドの呼び出し
 $view=View::forge('sample1/index',$data);
 return $view;

3) 『fuel/app/views/sample1/index.php』を下記のように変更します。尚、FuelPHPのデータ表示は、<?=$this->title?>ではなくて、<?=$title?>で済むのは簡単でいいですね。

<!DOCTYPE HTML>
 <html>
 <head>
 <meta charset="utf-8">
 <title>Sample1</title>
 </head>
 <body>
 <p><?=$title?></p>
 <p><?=$description?></p>
 <p>これはsample1のビューファイルです</p>
 </body>
 </html>

4) ブラウザで確認してみます。Viewクラスのforgeメソッドで、htmlタグはエスケープされ、そのまま文字として表示されています。

5) 次に、forgeメソッドの第3引数にfalseを入力します。

$view=View::forge('sample1/index',$data,false);

6) htmlのタグは適用され、文字の大きさが<h1><h2>タグの指定の大きさになっています。これは、デフォルトでhtmlentitiesでフィルターをかけ、XSS脆弱性に対するセキュリティ対策を施しているという事ですね。初心者には嬉しいですね。

7) これ以外のデータの渡し方も、簡単に記述しておきます。詳細はマニュアルサイトにありますので、参考にして下さい。

例1

$view=View::forge('sample1/index');
 $view->title='Hello WinRoad徒然草';
 $view->description='FuelPHPのテストサイトです';
 return $view;

例2

$view=View::forge('sample1/index');
 $view->set('title','Hello WinRoad徒然草');
 $view->set('description','FuelPHPのテストサイトです');
 return $view;

ビューのレイアウト

8) FuelPHPのビューはネスト(入れ子)出来るので、簡単にレイアウトが作成出来るみたいですね。それでは実際に試してみます。尚、毎回フォルダ構成とファイル名を宣言してからを記述するのは面倒ですので、コードの前にフォルダ構成とファイル名を記載します。下記の3つのファイルを作成します。

fuel/app/views/sample1/header.php

<div class="header">
<?=$title?>
</div>

fuel/app/views/sample1/content.php

<div class="content">
<h1>ようこそ<?=$title?></h1>
<p><?=$description?></p>
</div>

fuel/app/views/sample1/footer.php

<div class="footer">
@Copyright<?=date('Y')?><?=$title?>
</div>

9) index.phpを修正します。

fuel/app/views/sample1/index.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>ビューのレイアウト</title>
</head>
<body>
<?=$header?>
<?=$content?>
<?=$footer?>
</body>
</html>

10) sample1コントローラのindexメソッドを修正します。

fuel/app/classes/controller/sample1.php

<?php
 class Controller_Sample1 extends Controller
 {
 public function action_index()
 {
 //静的メソッドの呼び出し
 $view=View::forge('sample1/index');
 //基本データのセット
 $view->set_global('title','WinRoad徒然草');
 $view->set_global('description','FuelPHPのテストサイトです');
 //ビューファイルのネスト
 $view->header=View::forge('sample1/header');
 $view->content=View::forge('sample1/content');
 $view->footer=View::forge('sample1/footer');
 return $view;
 }
 }

11) それではブラウザで確認してみます。『http://localhost/fuelphp/sample1』と入力します。

本日は以上です。

-FuelPHP
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.