NAME
Mojolicious::Plugin::Model - Model for Mojolicious applications
SYNOPSIS
Model Users
package MyApp::Model::Users;
use Mojo::Base 'MojoX::Model';
sub check {
my ($self, $name, $pass) = @_;
# Constant
return int rand 2;
# Or Mojo::Pg
return $self->app->pg->db->query('...')->array->[0];
# Or HTTP check
return $self->app->ua->post($url => json => {user => $name, pass => $pass})
->res->tx->json('/result');
}
1;
Model Users-Client
package MyApp::Model::Users::Client;
use Mojo::Base 'MyApp::Model::User';
sub do {
my ($self) = @_;
}
1;
Mojolicious::Lite application
#!/usr/bin/env perl
use Mojolicious::Lite;
use lib 'lib';
plugin 'Model';
# /?user=sebastian&pass=secr3t
any '/' => sub {
my $c = shift;
my $user = $c->param('user') || '';
my $pass = $c->param('pass') || '';
# client model
my $client = $c->model('users-client');
$client->do();
return $c->render(text => "Welcome $user.") if $c->model('users')->check($user, $pass);
$c->render(text => 'Wrong username or password.');
};
app->start;
All available options
#!/usr/bin/env perl
use Mojolicious::Lite;
plugin Model => {
namespaces => ['MyApp::Model', 'MyApp::CLI::Model'],
base_classes => ['MyApp::Model'],
default => 'MyApp::Model::Pg',
params => {Pg => {uri => 'postgresql://user@/mydb'}}
};
DESCRIPTION
Mojolicious::Plugin::Model is a Model (M in MVC architecture) for Mojolicious applications. Each model has an app
attribute.
OPTIONS
Mojolicious::Plugin::Model supports the following options.
namespaces
# Mojolicious::Lite
plugin Model => {namespaces => ['MyApp::Model']};
Namespace to load models from, defaults to $moniker::Model
.
base_classes
# Mojolicious::Lite
plugin Model => {base_classes => ['MyApp::Model']};
Base classes used to identify models, defaults to MojoX::Model.
default
# Mojolicious::Lite
plugin Model => {default => 'MyModel'};
any '/' => sub {
my $c = shift();
$c->model->do(); # used model MyModel
# ...
}
The name of the default model to use if the name of the current model not specified.
params
# Mojolicious::Lite
plugin Model => {params => {DBI => {dsn => 'dbi:mysql:mydb'}}};
Parameters to be passed to the class constructor of the model.
HELPERS
Mojolicious::Plugin::Model implements the following helpers.
model
my $model = $c->model($name);
Load, create and cache a model object with given name. Default class for model camelize($moniker)::Model
. Return undef
if model not found.
entity
my $disposable_model = $c->entity($name);
Create a new model object with given name. Default class for model camelize($moniker)::Model
. Return undef
if model not found. Use entity
instead of model
when you need stateful objects.
METHODS
Mojolicious::Plugin::Model inherits all methods from Mojolicious::Plugin and implements the following new ones.
register
$plugin->register(Mojolicious->new);
Register plugin in Mojolicious application.
SEE ALSO
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
AUTHOR
Andrey Khozov, avkhozov@googlemail.com
.
CONTRIBUTORS
Alexey Stavrov, logioniz@ya.ru
.
Denis Ibaev, dionys@gmail.com
.
Eugen Konkov, kes-kes@yandex.ru
.
COPYRIGHT AND LICENSE
Copyright (C) 2017, Andrey Khozov.
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.