Mojolicious::Plugin::Model - Model for Mojolicious applications
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'}} };
Mojolicious::Plugin::Model is a Model (M in MVC architecture) for Mojolicious applications. Each model has an app attribute.
app
Mojolicious::Plugin::Model supports the following options.
# Mojolicious::Lite plugin Model => {namespaces => ['MyApp::Model']};
Namespace to load models from, defaults to $moniker::Model.
$moniker::Model
# Mojolicious::Lite plugin Model => {base_classes => ['MyApp::Model']};
Base classes used to identify models, defaults to MojoX::Model.
# 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.
# Mojolicious::Lite plugin Model => {params => {DBI => {dsn => 'dbi:mysql:mydb'}}};
Parameters to be passed to the class constructor of the model.
Mojolicious::Plugin::Model implements the following helpers.
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.
camelize($moniker)::Model
undef
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.
entity
model
Mojolicious::Plugin::Model inherits all methods from Mojolicious::Plugin and implements the following new ones.
$plugin->register(Mojolicious->new);
Register plugin in Mojolicious application.
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
Andrey Khozov, avkhozov@googlemail.com.
avkhozov@googlemail.com
Alexey Stavrov, logioniz@ya.ru.
logioniz@ya.ru
Denis Ibaev, dionys@gmail.com.
dionys@gmail.com
Eugen Konkov, kes-kes@yandex.ru.
kes-kes@yandex.ru
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.
To install Mojolicious::Plugin::Model, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::Model
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::Model
For more information on module installation, please visit the detailed CPAN module installation guide.