SOHOゆいちのサイト
前回は、コントローラーから値をセットする方法を記載しました。
この方法では、ルーティングで紐づけられたコントローラーからの出力となるため、各ページ共通の値のセットなどを行うのに向きません。Bsheでは、コントローラーからViewへ値をアサインするほかにresourceクラスを定義して、テンプレートへ値をセットすることができます。
HTMLテンプレートをwww/_bshetemplate/test/hello_world2.htmlに以下のように用意します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello world2</title>
</head>
<body>
リソースクラスからセット:<span key="bshe::helloworld:test"></span>
</body>
</html>
BsheのViewクラスは、key属性の3つ目と4つ目の文字列を利用してリソースクラスとメソッドを特定します。
上記の例では「Application_Resource_Helloworld」クラスの「assignValuesTest」メソッドを呼び出すことを示しています。
(ここで、クラスやメソッドの頭の「Application_Resource_」や「assignValues」は設定にて変更可能ですが、おまじない程度に思っておいてください)
上記のアサインを処理するために/application/views/resources以下に、Helloworld.phpとして以下のようなクラスファイルを用意します。
ここで、リソースクラスは以下の2つのフォルダのいずれかに設置することで動作します。
/application/views/resources
/application/[モジュール名]/views/resources
class Application_Resource_Helloworld extends Bshe_View_Resource_Html_Abstract
{public function assignValuesTest($arrayParams)
{
try {
$arrayAssign = array(
‘method’ => ‘a’,
‘element’ => $arrayParams['element'],
‘params’ =>
array(
0 => ‘innerHTML’,
1 => ‘hello world’,
2 => $arrayParams['params']['helperName'],
3 => $arrayParams['params']['helperParams']
)
);
$arrayParams['templateClass'] = self::assign($arrayParams['templateClass'], $arrayAssign);return $arrayParams['templateClass'];
} catch (Exception $e) {
throw $e;
}
}
}
$arrayAssignにセットする配列は、DOMクラスへの処理を示しています。
この例ではmethodの「a」が、値のセットを示し、
paramsの中の配列が
0:対象(属性の場合は属性名)
1:セットする値
2:ヘルパー名
3:ヘルパーの引数
となります。
これで、http://アプリケーションパス/test/hello_world.htmlへアクセスすると
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html >
<head >
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title >hello world2</title>
</head>
<body >
リソースクラスからセット:<span >hello world</span>
</body>
</html>
というようなHTMLが生成されます。
www.bshe.org (created by itassist.info)