FuelPHP-ビュー

ViewMVCアプリケーションのプレゼンテーション層です。アプリケーションロジックをプレゼンテーションロジックから分離します。コントローラがHTML、CSS、またはその他のコンテンツを生成する必要がある場合、コントローラはタスクをビューエンジンに転送します。

FuelPHPは、ビューエンジンに必要なすべての機能を備えたシンプルで柔軟なクラスViewを提供します。ビュークラスは、ビューファイルのレンダリングをサポートします。ビューファイルは、PHP命令が埋め込まれたHTMLページです。ビューファイルの変数は、PHP配列としてViewクラスを使用して設定し、配列のキーを使用してビューファイルで参照できます。Viewクラスの重要なメソッドのいくつかを確認しましょう。

フォージ

  • Purpose −新しいビューオブジェクトを作成します

  • Parameter −以下はパラメータです

    • $file −ビューフォルダー、fuel / app / viewsを基準にしたビューファイルのパス

    • $data −値の配列

    • $filter −自動エンコードを設定します。デフォルトはメイン構成ファイルの設定です。

  • Returns −ビューのインスタンス

例えば、

$view = View::forge ('path/to/view', array( 
   'title' => "Show employee, 
   'employees' => $employees, 
));

auto_filter

  • Purpose −データをエンコードするかどうかを設定します

  • Parameter −以下はパラメータです

    • $filter − true / false

  • Returns −現在のビューオブジェクト

例えば、

$view->auto_filter(); 
$view = $view->auto_filter(false);

set_filename

  • Purpose −ビューファイルを設定または変更できます。

  • Parameter −以下はパラメータです-

    • $file −ビューフォルダー、fuel / app / viewsに関連するビューファイルへのパス

  • Returns −現在のビューオブジェクト

例えば、

$view = new View();
$view>set_filename('path/to/view');

セットする

  • Purpose −1つ以上の変数の値を設定します

  • Parameter −以下はパラメータです

    • $key −変数名または値の配列

    • $value −値/ null

    • $filter −エンコーディング設定、true / false

  • Returns −現在のビューオブジェクト

例えば、

$view = new View(); 
$view->set(array('name' => 'Jon'));

set_global

set_globalはに似ています setただし、すべてのビューに適用され、すべてのビューから変数にアクセスできます。これは静的メソッドです。

View::set_global('name', 'Jon', false);

set_safe

  • Purpose −安全なエンコードをオンにして1つ以上の変数の値を設定します。

  • Parameter −以下はパラメータです−

    • $key −変数名または値の配列

    • $value −値/ null

  • Returns −現在のビューオブジェクト

例えば、

$view = new View(); 
$view->set_safe(array('name' => 'Jon'), null);

取得する

  • Purpose −1つ以上の変数の値を取得します

  • Parameter −以下はパラメータです

    • $key −変数名

    • $default −キーが見つからない場合に返されるデフォルト値

  • Returns −入力キーの値

例えば、

$view = new View(); 
$name = $view>get('name');  // name = 'Jon'

レンダリング

  • Purpose −ビューファイルをローカル変数およびグローバル変数とマージして文字列にレンダリングします

  • Parameter −以下はパラメータです−

    • $file −ビューのファイル名

  • Returns −文字列としてレンダリングされたビューファイル

例えば、

$html = View::forge()->render('/path/to/view');

ビューを作成する

ビューを理解するために、アクションメソッド、コントローラーのaction_showController_Employeeを変更してみましょう。

employee.php

<?php  
   class Controller_Employee extends Controller { 
      public function action_show() {
         return View::forge('employee/show'); 
      } 
   }

次に、fuel / app / viewsにあるviewsディレクトリにemployeeフォルダを作成します。次に、employeeフォルダー内にshow.phpファイルを作成し、次のコードを追加します。

show.php

<h3> My first view </h3>

ここで、URL http:// localhost:8080 / employee / showをリクエストすると、次の結果が生成されます。

ビューへのデータの受け渡し

前に説明したように、Viewメソッドを使用してデータをビューに渡すことができます。以下は簡単な例です。

employee.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $data = array(); //stores variables going to views 
      $data['name'] = ‘Jon’; 
      $data[‘job’] = ‘Designer’;  
      
      //assign the view to browser output 
      return View::forge('employee/show', $data); 
   } 
}

ここで、変更を追加します view ファイル。

show.php

<html> 
   <body> 
      Hello, <?php echo $name; ?>. 
      Your job is, <?php echo $job; ?>. 
   </body> 
</html>

URLをリクエストすると、名前とジョブが次のように表示されます-

フィルタを表示

ビューは出力エンコーディングを使用して、必要なものをすべて渡します。フィルタリングされていないデータを渡したい場合は、setメソッドを使用できます。

employee.php

class Controller_Employee extends Controller { 
   public function action_show() { 
      $view = \View::forge('employee/show'); 
      $view->set('name', 'Jon', true); 
      $view->set('job', '<em>Designer</em>', false); 
      return $view; 
   } 
}

URLをリクエストすると、次のようにジョブの詳細が強調スタイルで表示されます。

ネストされたビュー

FuelPHPはネストされたビューをサポートします。ネストされたビューでは、ビューに1つ以上のビューを含めることができます。別のビューでビューを設定するには、次のようにrenderメソッドを使用できます。

employee.php

class Controller_Employee extends Controller { 
   public function action_nestedview() { 
      
      //assign variables 
      $data = array(); 
      $data['title'] = 'Home';  
      $data['name'] = 'Jon'; 
      $data['job'] = 'Designer';  
      $views = array(); 
      $views['head'] = View::forge('head', $data)->render(); 
      $views['content'] = View::forge('employee/show', $data)->render();  
      return View::forge('layout', $views, false)->render(); 
   } 
}

燃料/アプリ/ビュー/レイアウト.php

<html> 
   <head> 
      <?php echo $head; ?> 
   </head> 
   
   <body> 
      <?php echo $content; ?> 
   </body> 
</html>

燃料/アプリ/ビュー/head.php

<title>
   <?php echo $title; ?>
</title>

燃料/アプリ/ビュー/従業員/show.php

Hello, <?php echo $name; ?>. 
Your job is, <?php echo $job; ?>.

URL http:// localhost:8080 / employee / nestedviewをリクエストし、ソースビューを確認すると、次のコードが表示されます。

<html> 
   <head> 
      <title>Home</title> 
   </head> 
   
   <body> 
      Hello, Jon. 
      Your job is, Designer. 
   </body> 
</html>

テンプレートコントローラー

FuelPHPは、組み込みのレイアウトコンセプトを備えたコントローラーController_Templateを提供します。レイアウトの概念は、before() そして after()コントローラーの方法。テンプレートコントローラーを使用するには、Controllerの代わりにController_Templateを使用してコントローラーを拡張する必要があります。after()/ before()メソッドを使用している間、parent :: beforeとparent :: afterを呼び出す必要があります。そうしないと、テンプレートが壊れます。

<?php 
   class Controller_Test extends Controller_Template { 
      public function before() { 
         parent::before(); 
         // do stuff 
      } 
        
      public function after($response) { 
         $response = parent::after($response); 
         
         // do stuff 
         return $response; 
      } 
   }

template.php

これは、Fuelのデフォルトのテンプレートファイルです。テンプレートファイルは、JS、CSS、HTMLの呼び出し、およびビューパーシャルの呼び出しに使用されます。それはにありますfuel/app/views/。テンプレートは、ヘッダー、フッター、サイドバーなどを含むレイアウトでビューをラップするために使用されます。次のように、actionメソッドの$ template変数を使用してデフォルトのテンプレートを変更できます。

燃料/アプリ/クラス/コントローラー/test.php

<?php  
   class Controller_Test extends Controller_Template { 
      public $template = 'template_test'; 
      public function action_index() { 
         $this->template->title = 'Example Page'; 
         $this->template->content = View::forge('test/index'); 
      } 
   }

燃料/アプリ/ビュー/template_test.php

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title><?php echo $title; ?></title> 
      <?php echo Asset::css('bootstrap.css'); ?> 
   </head> 

   <body> 
      <div> 
         <?php echo $content; ?>
      </div> 
   </body> 
</html>

燃料/アプリ/ビュー/テスト/インデックス.php

<h3>My Test page</h3>

ここで、URL http:// localhost:8080 / testをリクエストすると、次の結果が生成されます。

結果

<!DOCTYPE html> 
<html> 
   <head> 
      <meta charset = "utf-8"> 
      <title>Example Page</title> 
      <link type = "text/css" rel = "stylesheet" 
         href = "http://localhost:8080/assets/css/bootstrap.css?1464964766" />
   </head> 
   
   <body> 
      <div> 
         <h3>My Test page</h3> 
      </div> 
   </body> 
</html>

ビューページの生成

Fuel'sOilコンソールを使用してビューページを生成できます。以下は基本的な構文です。

oil g controller <controller-name> <page1> <page2> ..

ホームページとログインページを含む管理コントローラーを生成するには、次のコマンドを使用します。

oil g controller admin home login

結果

Creating view: /path/to/app/fuel/app/views/admin/home.php 
Creating view: /path/to/app/fuel/app/views/admin/login.php 
Creating controller: /path/to/app/fuel/app/classes/controller/admin.php