Curry
PHP Framework

core

db

html

utility

ViewSmarty

クラス概要

ViewAbstractを継承し、CurryのMVCの中でビュークラスとして必要な機能を提供するクラスです。
テンプレートエンジンとしてSmartyを利用する場合にこのクラスをビュークラスとして利用します。
このクラスをビュークラスとする場合は、SmartyのパッケージディレクトリをCurryのフレームワークのルートディレクトリに配置する必要があります。そしてcurry.iniのviewセクション内の"class_name"の値に"ViewSmarty"を設定します。

クラスファイル位置

curry/core/view_smarty.php

フィールド

公開されるフィールドはありません。

メソッド

メソッド名 アクセス 概要
intialize protected 処理は何も行いません。
renderTemplate protected レイアウトが無効になっている場合にrenderメソッドより呼び出されます。
コントローラークラスなどから指定されたテンプレートファイルを読み込み、変数を割り当てて出力します。
renderTemplateWithLayout protected レイアウトが有効になっている場合にrenderメソッドより呼び出されます。
コントローラークラスなどから指定されたテンプレートファイルを読み込み、変数を割り当てた後、レイアウトテンプレートを読みこみ、変数"$inner_contents"の位置にテンプレートソースを割り当てて出力します。
setCompileDirectory public Smartyのテンプレートコンパイル機能を利用する場合に、コンパイル済みテンプレートを出力するディレクトリを設定します。このディレクトリはシステムが書き込み可能な権限を与える必要があります。
setCacheDirectory public SmartyのHTMLキャッシュ機能を利用する場合に、HTMLのキャッシュを出力するディレクトリを設定します。このディレクトリはシステムが書き込み可能な権限を与える必要があります。
getSmarty public Smartyのインスタンスを取得します。
これは新たにSmartyのインスタンスを生成するという意味ではなく、ViewSmartyクラスがフィールドとして保持しているインスタンスを返します。

オーバーライドメソッド()

メソッド名 アクセス 概要
intialize protected 処理は何も行いません。
renderTemplate protected レイアウトが無効になっている場合にrenderメソッドより呼び出されます。
コントローラークラスなどから指定されたテンプレートファイルを読み込み、変数を割り当てて出力します。
renderTemplateWithLayout protected レイアウトが有効になっている場合にrenderメソッドより呼び出されます。
コントローラークラスなどから指定されたテンプレートファイルを読み込み、変数を割り当てた後、レイアウトテンプレートを読みこみ、変数"$inner_contents"の位置にテンプレートソースを割り当てて出力します。

継承メソッド()

メソッド名 アクセス 概要
setTemplate public HTML描画に使用するテンプレートを明示的に指定します。
通常はリクエストされたコントローラーとモジュールのキーにもとづいて自動選択されますが、自動選択されるものとは別のテンプレートで出力したい場合にこのメソッドで指定します。
setLayout public レイアウトを利用している場合に、HTMLレイアウトとして使用するテンプレートを明示的に指定することができます。
enableLayout public ビューレイアウトの仕組みを利用するか否かを設定します。使用しない場合はレイアウトテンプレートの格納ディレクトリにレイアウトテンプレートを配置しても無視されます。
デフォルトでは利用する設定になっているので、利用する場合は特にこのメソッドを明示的に実行する必要はありません。
setTemplateDirectory public ビューテンプレートを格納するルートのディレクトリを設定します。
Curryではディレクトリの管理はPathManagerに集約されているため、実際にはPathManagerのsetViewTemplateDirectoryメソッドを実行するのと同じ意味になります。
setLayoutDirectory public ビューレイアウトテンプレートを格納するディレクトリを設定します。
Curryではディレクトリの管理はPathManagerで集中管理しているため、実際にはPathManagerのsetViewLayoutDirectoryメソッドを実行するのと同じ意味になります。
render public HTML描画処理を実行します。
この処理はコントローラーで自動的に実行されるため、通常は明示的に実行する必要はありません。
enableRendering public HTML出力を行うか否かを設定します。
falseに設定することで、HTML出力が行われなくなります。HTML出力がViewクラスの役割のため、falseに設定することは実質上、Viewクラスの無効化と言えます。
clearValues public ビューに割り当てられたテンプレート変数を全てクリアします。
addCss public HTMLヘッダに特定の外部CSSファイルの読み込みの記述を追加します。
レイアウトを利用する場合、HTMLのlinkタグによるCSSファイルの読み込み記述は、レイアウトに固定で記述する方法がありますが、あるページだけ任意のCSSを読み込みたいというような事があります。addCssメソッドではこれを実現します。
このメソッドでCSSファイルの格納ディレクトリ以下のCSSファイルのパスを指定することで、そのCSSファイルを読み込む事ができます。

addCssメソッドでは、フレームワークで自動的に読み込まれるCSS(common.cssや{コントローラー名}.css)よりも後のタイミングで読み込みが行なわれます。
addJs public HTMLヘッダに特定の外部Javascriptファイルの読み込みの記述を追加します。
レイアウトを利用する場合、HTMLのscriptタグによるJavascriptファイルの読み込み記述は、レイアウトに固定で記述する方法がありますが、あるページだけ任意のJavascriptファイルを読み込みたいというような事があります。addJsメソッドではこれを実現します。
このメソッドでJavascriptファイルの格納ディレクトリ以下のJavascriptファイルのパスを指定することで、そのJavascriptファイルを読み込む事ができます。

addJsメソッドでは、フレームワークで自動的に読み込まれるJavascript(common.jsや{コントローラー名}.js)よりも後のタイミングで読み込みが行なわれます。
setDefaultLayoutEnabled public ビューレイアウトを利用するかしないかの初期設定値を設定します。
enableLayoutも同様にビューレイアウトを利用するかしないかの設定を行うメソッドですが、
enableLayoutはビュークラスのインスタンスメソッドのため、どちらかというとコントローラークラス内で必要に応じて都度設定するためのメソッドであるのに対し、
このsetDefaultLayoutEnabledは静的メソッドで、最初にこのメソッドで設定するとレイアウトは一切無効となります。

Curryは基本はレイアウトが有効で、ページによって無効にしたい場合はenableLayoutで無効にするという考え方ですが、逆に、レイアウト無効が基本でページによって有効にしたい場合はenableLayoutで有効にする、というようにしたい場合などにsetDefaultLayoutEnabledを利用します。

このような性格上、このメソッドはindex.phpなどでシステム全体の基本設定としてレイアウト無効にするという使い方が考えられます。

※バージョン1.1.0以降
setErrorTemplate public 例外発生時に表示するページのテンプレートを指定します。
例外発生時はテンプレートディレクトリ内のerror/error.php(tpl)が出力されますが、
error.php以外のテンプレートを出力したい場合にこのメソッドで設定します。

例えば、debug.phpというテンプレートを作り、開発時はこのテンプレートにエラー情報が出力されるような内容にし、error.phpは公開環境用として固定のエラーメッセージを表示するような内容にして、後は何かで開発環境か公開環境かを判定してそれによってどちらのエラーテンプレートを出力するかを切り分ける、という使い方が考えられます。

ただしエラーテンプレートの格納ディレクトリはテンプレートディレクトリ下のerrorディレクトリに固定で変更することは出来ません。エラーテンプレートのしてはこの中に作成したものを指定することになります。

※バージョン1.1.0以降
getErrorTemplate public 現在設定されているエラーテンプレート名を取得します。

※バージョン1.1.0以降
existsTemplate public setTemplateメソッドなどで設定されたテンプレートの存在を確認します。

※バージョン1.1.4以降
setRenderingAction public 実際に出力するテンプレートの基準となるアクション名を設定します。

※バージョン1.3.0以降
setRenderingController public 実際に出力するテンプレートの基準となるコントローラー名を設定します。

※バージョン1.3.0以降
setDefaultErrorTemplate public エラーテンプレート名のデフォルトを設定します。
setErrorTemplateとの違いは、静的メソッドであるという点です。インスタンスとしてのエラーテンプレートのデフォルトは、インスタンス生成時にデフォルトの設定を参照し、設定します。つまり、setDefaultErrorTemplateメソッドは、インスタンス生成前に設定することで、インスタンス生成時点で設定されるエラーテンプレート名のデフォルトを指定できるという位置づけのメソッドになります。

このメソッドの使いどころとしては、Initializerクラスでの初期化メソッド内となります。このメソッド時点ではビューのインスタンスはまだ生成されておらず、Initializerで初期設定としてエラーテンプレートが設定できないため、setDefaultErrorTemplateであらかじめ設定しておくというような使い方になります。

※バージョン1.4.0以降
setOutputEncoding public 出力の文字コードを指定します。
これを指定すると、テンプレートのファイルの文字コードに関わらず、指定した文字コードに強制的に変換され、出力されます。
指定した場合、HTMLヘッダの文字コード宣言もこれに合わせる必要があります。

※バージョン1.4.7以降
setTitle public HTMLヘッダのtitleタグを設定します。
サイト名など、ブラウザのヘッダにページタイトルとして表示する文字列を指定します。

※バージョン1.4.9以降
setMetaHttpEquiv public HTMLヘッダにhttp-equiv属性を持つmetaタグを追加します。
パラメータとしてhttp-equiv属性の値とcontent属性の値を指定します。

※バージョン1.4.9以降
setMetaName public HTMLヘッダに、name属性を持つmetaタグを追加します。
パラメータとしてname属性の値とcontent属性の値を指定します。

※バージョン1.4.9以降
setMetaNameKeywords public HTMLヘッダに、name属性が"keywords"であるmetaタグを追加します。
ページの特徴を表すキーワードを指定しす。

※バージョン1.4.9以降
setMetaNameDescription public HTMLヘッダに、name属性が"description"であるmetaタグを追加します。
ページの概要文を指定します。
検索サイトによってはこの文をサイトの説明文としてそのまま表示するものもあります。

※バージョン1.4.9以降
addPreferredCss public addCssメソッドと同様に、HTMLヘッダにCSSファイルの読み込みの記述を追加することが出来ますが、こちらのメソッドでは先頭に記述され、フレームワークで自動的に読み込まれるCSSよりも前のタイミングで読み込まれます。

※バージョン1.4.11以降
addPreferredJs public addJsメソッドと同様に、HTMLヘッダにJavascriptファイルの読み込みの記述を追加することが出来ますが、こちらのメソッドでは先頭に記述され、フレームワークで自動的に読み込まれるJavascriptよりも前のタイミングで読み込まれます。

※バージョン1.4.11以降