User since
2003-08-04
7321
Artikel
ModeratorIn
hi (sri),
was muss man denn tun, um *::M::CDBI::* in einem script ohne catalyst benutzen zu können.
Zuvor hatte ich meine Klasse direkt von Class::DBD(::Sweet) abgeleitet. Da musste ich dann aber z.b. die Columns etcpp. definieren. CDBI nimmt mir das ja ab.
wenn ich aber nun z.B. use OxWebMail::M::CDBI::User (); sage, heißt es:
Can't locate object method "has_a" via package "OxWebMail::M::CDBI::User"
also, was mach ich falsch, oder muss ich doch über Class::DBI gehen?\n\n
<!--EDIT|esskar|1121477837-->
User since
2004-01-29
828
Artikel
BenutzerIn
Du brauchst einfach nur eine Instanz deiner OxWebMail::M::CDBI Klasse.
Denn die ganze Class::DBI::Loader Magie spielt sich in dessen new() ab. ;)
User since
2003-08-04
7321
Artikel
ModeratorIn
fast; der Hund liegt wohl hier
Catalyst::Model::CDBI.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub new {
my ( $self, $c ) = @_;
$self = $self->NEXT::new($c);
$self->{namespace} ||= ref $self;
$self->{additional_base_classes} ||= ();
push @{ $self->{additional_base_classes} }, ref $self;
eval { $self->loader( Class::DBI::Loader->new(%$self) ) };
if ($@) { $c->log->debug(qq/Couldn't load tables "$@"/) if $c->debug }
else {
$c->log->debug(
'Loaded tables "' . join( ' ', $self->loader->tables ) . '"' )
if $c->debug;
}
for my $class ( $self->loader->classes ) {
$class->autoupdate(1);
$c->components->{$class} ||= bless {%$self}, $class;
no strict 'refs';
*{"$class\::new"} = sub { bless {%$self}, $class };
}
return $self;
}
$c ist wohl undefined, oder?
User since
2003-08-04
7321
Artikel
ModeratorIn
hmm ... mal sehen...
was anderes, selbe baustellen
use base qw/Catalyst::Model::CDBI Class::DBI::Sweet/;
oder besser
use base 'Catalyst::Model::CDBI';
->config(
# ...
additional_base_classes => [qw/Class::DBI::Sweet/],
);
und warum?
User since
2004-01-29
828
Artikel
BenutzerIn
Class::DBI::Sweet ist ein sonderfall (wird auch im perldoc Class::DBI::Loader erwaehnt).
left_base_classes => [qw/Class::DBI::Sweet/]
\n\n
<!--EDIT|sri|1121525206-->
User since
2003-08-04
7321
Artikel
ModeratorIn
ach ja; jetzt seh ich es; hatte nur 0.20er version
zu 1:
my $cdbi = new OxWebMail::M::CDBI(new OxWebMail); # create magic instance
geht