1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
package Blog::Controller::Posts;
use Mojo::Base 'Mojolicious::Controller', -signatures;
sub create ($self) {
$self->render(post => {});
}
sub edit ($self) {
$self->render(post => $self->posts->find($self->param('id')));
}
sub index ($self) {
$self->render(posts => $self->posts->all);
}
sub remove ($self) {
$self->posts->remove($self->param('id'));
$self->redirect_to('posts');
}
sub show ($self) {
$self->render(post => $self->posts->find($self->param('id')));
}
sub store ($self) {
my $v = $self->_validation;
return $self->render(action => 'create', post => {}) if $v->has_error;
my $id = $self->posts->add({title => $v->param('title'), body => $v->param('body')});
$self->redirect_to('show_post', id => $id);
}
sub update ($self) {
my $v = $self->_validation;
return $self->render(action => 'edit', post => {}) if $v->has_error;
my $id = $self->param('id');
$self->posts->save($id, {title => $v->param('title'), body => $v->param('body')});
$self->redirect_to('show_post', id => $id);
}
sub _validation ($self) {
my $v = $self->validation;
$v->required('title', 'not_empty');
$v->required('body', 'not_empty');
return $v;
}
1;
|