Hello Worldの作成(2)  2009年5月7日

前回は、コントローラーから値をセットする方法を記載しました。

この方法では、ルーティングで紐づけられたコントローラーからの出力となるため、各ページ共通の値のセットなどを行うのに向きません。Bsheでは、コントローラーからViewへ値をアサインするほかにresourceクラスを定義して、テンプレートへ値をセットすることができます。

HTMLテンプレートの用意

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」は設定にて変更可能ですが、おまじない程度に思っておいてください)

Resourceクラスの用意

上記のアサインを処理するために/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が生成されます。

このエントリをはてなブックマークに登録 このエントリをBuzzurlにブックマーク Yahoo!ブックマークに登録 このエントリをlivedoorクリップに登録 Deliciousにブックマーク

コメントを投稿