YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* アプリケーション作成の流れ [#x12c6c7b]
** 最初に [#r404f35d]
あるウェブサイトで、会員情報を扱う画面(群)を作る事にす...
** データベースを作る [#b3c50625]
データベースmyappdbを作り、そこにmemberテーブルを作る。
** モデルを作る [#saa7a3a0]
*** スキーマクラスを作る [#i9a2b994]
- データベースが持つテーブル名(モデルクラス名)などを書...
- ファイル名や配置場所のルールはないようだが、例えばlib/M...
package MyappDB;
use base qw/DBIx::Class::Schema/;
__PACKAGE__->load_classes(
{
MyappDB => [qw/Member/],
}
);
1;
*** テーブルクラスを作る [#xa56a0eb]
- テーブルを表すクラス。lib/MyappDB/Member.pmというファイ...
- 必要なテーブルの分だけ作る。
- スキーマクラスをDBIx::Class::Schema::Loaderを継承して作...
package MyappDB::Member;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components(qw/ PK::Auto Core/);
__PACKAGE__->table('member');
__PACKAGE__->add_columns(qw/
member_id
name
age
/);
__PACKAGE__->set_primary_key('login_id');
1;
*** モデルクラスを作る [#pa138846]
以下のようにヘルパースクリプトを実行する。
script/myapp_create.pl model MyappDB DBIC::Schema MyappDB
'dbi:Pg:dbname=myapp_db;host=localhost' 'pgsql' 'pass...
すると、lib/Myapp/Model/MyappDB.pmというモデルクラスがで...
- 上のコマンドのうち、最初の"MyappDB"はモデルクラスのクラ...
- 2番目の"MyappDB"はこのコマンドを実行する前に作っておい...
** コントローラを作る [#a4c2d038]
script/myapp_create.pl controller Member
MemberはURLの一部になる。(例:http://myapp/member/index...
**ビューを作る [#t7fd4913]
script/myapp_create.pl view TT TTSite
- TemplateToolkitのヘルパースクリプトはTTとTTSiteの2つあ...
- TTSiteは雛形になるテンプレートファイルを作ってくれる。...
** 処理(ロジック)を書く [#me961868]
*** メイン処理 [#w708c8ed]
コントローラにあたるlib/Myapp/Controller/Member.pm を開き...
sub list : Local {
my ( $self, $c ) = @_;
$c->stash->{members} = [$c->model('MyappDB::Member'...
$c->stash->{template} = 'member/list.tt2';
}
*** テンプレート表示用処理 [#pe9a35b3]
以下のようなendアクションを書き、自動的にテンプレートを表...
sub end : ActionClass('RenderView') {}
** テンプレートファイルを書く [#tbc1ee26]
lib/Myapp/Controller/Member.pm に以下のようにテンプレート...
<ul>
[% FOREACH member IN members -%]
<li>[% member.login_id %]</li>
[% END -%]
</ul>
** ミニサーバを起動し、動作を確認する [#x8b00c64]
script/myapp_server.pl -r
終了行:
* アプリケーション作成の流れ [#x12c6c7b]
** 最初に [#r404f35d]
あるウェブサイトで、会員情報を扱う画面(群)を作る事にす...
** データベースを作る [#b3c50625]
データベースmyappdbを作り、そこにmemberテーブルを作る。
** モデルを作る [#saa7a3a0]
*** スキーマクラスを作る [#i9a2b994]
- データベースが持つテーブル名(モデルクラス名)などを書...
- ファイル名や配置場所のルールはないようだが、例えばlib/M...
package MyappDB;
use base qw/DBIx::Class::Schema/;
__PACKAGE__->load_classes(
{
MyappDB => [qw/Member/],
}
);
1;
*** テーブルクラスを作る [#xa56a0eb]
- テーブルを表すクラス。lib/MyappDB/Member.pmというファイ...
- 必要なテーブルの分だけ作る。
- スキーマクラスをDBIx::Class::Schema::Loaderを継承して作...
package MyappDB::Member;
use strict;
use warnings;
use base 'DBIx::Class';
__PACKAGE__->load_components(qw/ PK::Auto Core/);
__PACKAGE__->table('member');
__PACKAGE__->add_columns(qw/
member_id
name
age
/);
__PACKAGE__->set_primary_key('login_id');
1;
*** モデルクラスを作る [#pa138846]
以下のようにヘルパースクリプトを実行する。
script/myapp_create.pl model MyappDB DBIC::Schema MyappDB
'dbi:Pg:dbname=myapp_db;host=localhost' 'pgsql' 'pass...
すると、lib/Myapp/Model/MyappDB.pmというモデルクラスがで...
- 上のコマンドのうち、最初の"MyappDB"はモデルクラスのクラ...
- 2番目の"MyappDB"はこのコマンドを実行する前に作っておい...
** コントローラを作る [#a4c2d038]
script/myapp_create.pl controller Member
MemberはURLの一部になる。(例:http://myapp/member/index...
**ビューを作る [#t7fd4913]
script/myapp_create.pl view TT TTSite
- TemplateToolkitのヘルパースクリプトはTTとTTSiteの2つあ...
- TTSiteは雛形になるテンプレートファイルを作ってくれる。...
** 処理(ロジック)を書く [#me961868]
*** メイン処理 [#w708c8ed]
コントローラにあたるlib/Myapp/Controller/Member.pm を開き...
sub list : Local {
my ( $self, $c ) = @_;
$c->stash->{members} = [$c->model('MyappDB::Member'...
$c->stash->{template} = 'member/list.tt2';
}
*** テンプレート表示用処理 [#pe9a35b3]
以下のようなendアクションを書き、自動的にテンプレートを表...
sub end : ActionClass('RenderView') {}
** テンプレートファイルを書く [#tbc1ee26]
lib/Myapp/Controller/Member.pm に以下のようにテンプレート...
<ul>
[% FOREACH member IN members -%]
<li>[% member.login_id %]</li>
[% END -%]
</ul>
** ミニサーバを起動し、動作を確認する [#x8b00c64]
script/myapp_server.pl -r
ページ名: