Thread Neues Forum: Warum nicht mit Catalyst? :) (69 answers)
Opened by sri at 2006-04-20 12:03

Strat
 2006-05-17 01:43
#90237 #90237
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@sri: wenn's dich interessiert, ich habe mal meine ersten versuche und probleme des Ersten Kontakts mitgeschrieben.

Ziel: MySql als DB und HTC als Templating System. Zunaechst mal mit HTC begonnen:
Code: (dl )
1
2
3
catalyst MyPBoard
cd MyPBoard
perl script\MyPBoard_create.pl view HTC HTML::Template::Compiled

mal den Standalone-Server gestartet, mich gefreut, dass es lief, und mir dann mal die Dateien naeher angeschaut.

Meine Templates habe ich in ./templates abgelegt

in lib\MyPBoard\View\HTC.pm die Sub new gecoded:
Code: (dl )
1
2
3
4
sub new {
my ($self) = shift;
return $self->SUPER::new(@_);
} # new


und in lib/MyPBoard/Controller/Root.pm die folgenden Subs reingeschrieben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub end : Private {
my ($self, $c) = @_;

$c->forward("MyPBoard::View::HTC");
} # end

sub register : Global {
my ( $self, $c ) = @_;

} # register

dann habe ich versucht, das template-directory ueber den Konstruktor mitzugeben, bin aber gescheitert. Die Views sind doch arg knapp dokumentiert. Erst durch ein Dump(\%options) in Catalyst::Helper::View::HTML::Template::Compiled habe ich herausgefunden, dass der template path root + root/base lautet. Das Template also nach root/base reingestellt, fehlermeldung:

Caught exception in MyTest3::View::HTML::Template::Compiled->process "'register' not found at D:/wamp/Perl815/site/lib/Catalyst/View/HTML/Template/Compiled.pm line 110"

Gut, also ab nach root, und es funktioniert.
sub register ein wenig aufgebohrt:
Code: (dl )
1
2
3
4
5
sub register : Global {
my ( $self, $c ) = @_;
$c->stash->{template} = "register.tmpl";
$c->stash->{text} = "Testtext";
} # register

und es laeuft mal.

Esskar gab mir den tip, mal was in die mypboard.yml zu schreiben:
Code: (dl )
1
2
3
4
template:
# cache_dir: './tmp/htc'
path: './templates'
global_vars: 1

und ich konnte die templates nun nach ./templates legen. auch wie man auf weitere optionen in dieser datei im template zugreifen kann
Code: (dl )
<%= c.config.template.path %>


So, Anbindung von HTC geloest; als naechstes wollte ich den Code nicht mehr in Root.pm haben, sondern in einer User.pm. Ich hab's mal manuell probiert, und es ging, aber esskar sagte mir, man kann auch mit myapp_create.pl neue controller anlegen, also neue Version, dieselben schritte nochmal und dann
Code: (dl )
perl script\mypboard_create.pl controller User

Fand dann heraus, dass man subs auch sehr gut folgendermaszen angeben kann:
Code: (dl )
sub register : Path('/user/register') {

...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Neues Forum: Warum nicht mit Catalyst? :)