Fuelphp-views

提供:Dev Guides
移動先:案内検索

FuelPHP-ビュー

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

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

フォージ

  • 目的-新しいViewオブジェクトを作成します
  • パラメータ-以下はパラメータです
  • $ file -ビューフォルダーfuel/app/viewsに対するビューファイルの相対パス
  • $ data -値の配列
  • $ filter -自動エンコーディングを設定します。デフォルトはメイン設定ファイルの設定です
  • Returns -ビューのインスタンス

例えば、

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

auto_filter

  • 目的-データをエンコードするかどうかを設定する
  • パラメータ-以下はパラメータです
  • $ filter -true/false
  • Returns -現在のビューオブジェクト

例えば、

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

set_filename

  • 目的-ビューファイルを設定または変更できます。
  • パラメータ-以下はパラメータです-
  • $ file -viewsフォルダー、fuel/app/viewsに相対的なビューファイルへのパス
  • Returns -現在のビューオブジェクト

例えば、

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

set

  • 目的-1つ以上の変数の値を設定する
  • パラメータ-以下はパラメータです
  • $ 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

  • 目的-安全なエンコーディングをオンにして1つ以上の変数の値を設定します。
  • パラメータ-以下はパラメータです-
  • $ key -変数名または値の配列
  • $ value -値/null
  • Returns -現在のビューオブジェクト

例えば、

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

get

  • 目的-1つ以上の変数の値を取得する
  • パラメータ-以下はパラメータです
  • $ key -変数名
  • $ default -キーが見つからない場合に返されるデフォルト値
  • 戻り値-入力キーの値

例えば、

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

レンダリングする

  • 目的-ビューファイルをローカル変数とグローバル変数にマージして文字列にレンダリングします
  • パラメータ-以下はパラメータです-
  • $ file -ビューのファイル名
  • Returns -文字列としてレンダリングされたビューファイル

例えば、

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

ビューを作成する

ビューを理解するために、コントローラーの_action_show_アクション_Controller_Employee_を変更しましょう。

employee.php

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

次に、_fuel/app/views_にあるビューディレクトリにフォルダ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();
   }
}

fuel/app/views/layout.php

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

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

fuel/app/views/head.php

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

fuel/app/views/employee/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/ にあります。 テンプレートは、ヘッダー、フッター、サイドバーなどを含むレイアウトでビューをラップするために使用されます。 次のように、アクションメソッドで$ template変数を使用してデフォルトのテンプレートを変更できます。

fuel/app/classes/controller/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');
      }
   }

fuel/app/views/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>

fuel/app/views/test/index.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のOilコンソールを使用して、ビューページを生成できます。 基本的な構文は次のとおりです。

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