Fuelphp-views
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