下記フォームに必要事項を入力後、確認ボタンを押してください。
この章では実際にMVCモデルを使用した開発を進めていきます。前回controllerのみを使用したプログラムを作成しましたが、そのコントローラを使用して作成を進めていきます。 (1)Viewクラスの作成 では今回は「こんにちは 世界!!Hello World!!」をViewを使用してウェブブラウザに表示します。Catalyst::ViewクラスのビューコンポーネントであるCatalyst::View::TT(テンプレートツールキット)を使用して画面に出力します。 Template ToolkitはPerlで利用できる代表的なテンプレートエンジンの一つでCatalystでViewを作成する場合には有効的なテンプレートエンジンです。 ではテンプレートツールキットを使用してViewクラスのモジュールを作成します。ビュークラスの作成はチェンジディレクトリでScriptフォルダに移動してヘルパースクリプトによって作成します。 ヘルパースクリプトで使用するコマンドは次の通りです。
<ビュークラスの作成> [APP_NAME]_create.pl view ビュークラス名 タイプ名前回、HelloプロジェクトのControllerのモジュールを使用しますので、コマンドは[Hello_create.pl]になります。ビュークラス名はHTMLでもMyviewのような名前をつけますが今回は[TT]で、タイプ名は[TT]と固定してしまってよいでしょう。タイプは最終的な "TT"はCatalyst::Viewクラスのタイプを意味し "TT"はTemplate Toolkitビューを使用することを示します。実際に使用するコマンドは次のコマンドを入力して実行してください。
hello_create.pl view TT TTコマンドを入力すると次のような表示がされます。
C:\data\Hello\script>Hello_create.pl view TT TT exists "C:\data\Hello\lib\Hello\View" exists "C:\data\Hello\t" created "C:\data\Hello\lib\Hello\View\TT.pm" created "C:\data\Hello\t\view_TT.t" C:\data\Hello\script>これでビュークラスが作成されました。作成されたビュークラスはC:\data\Hello\lib\Hello\Viewに作成されたTT.pmです。
<TT.pmモジュール> package Hello::View::TT; use Moose; use namespace::autoclean; extends 'Catalyst::View::TT'; __PACKAGE__->config( TEMPLATE_EXTENSION => '.tt', render_die => 1, ); =head1 NAME Hello::View::TT - TT View for Hello =head1 DESCRIPTION TT View for Hello. =head1 SEE ALSO L作成されたモジュールはCatalyst::View::TTコンポーネントを継承したクラスです。これが初期状態のViewクラスで今回はそのまま使用します。 (2)テンプレートファイルの作成 テンプレートファイルはHTMLドキュメントのようなもので、今回自分で記述し作成します。ファイル名はコントローラクラスのアクションメソッドで今回は[introView.tt]とします。 後ほどTemplate Toolkitを使用して作成しますが、Template Toolkitは非常にフル機能のテンプレート機能で優れたドキュメントがありますが、これはTTチュートリアルではないので、ここではTTの基本的な使い方に固執します。 ファイルはプロジェクトファイル/rootフォルダの直下に配置します。Template Toolkitドキュメントhttp://template-toolkit.org/=head1 AUTHOR A clever guy =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;
[introView.tt] <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="stylesheet.css" > <meta charset="UTF-8"> <title>[% msg1 | html %]</title> </head> <body> <h1>[% msg1 | html %]</h1> <p>[% msg2 | html %]</p> <h2>[% msg3 | html %]</h2> <p>[% msg4 | html %]</p> <h2>[% msg5 | html %]</h2> <p>[% msg6 | html %]</p> </body> </html>