sqlite> .schema
CREATE TABLE item (
ID INTEGER primary key autoincrement,
TITULO text not null,
LUGAR INTEGER,
KIND INTEGER
);
CREATE TABLE localizacion (
IDLOCALIZACION INTEGER PRIMARY KEY AUTOINCREMENT,
DESCRIPCION TEXT NOT NULL
);
####
davioth@kathia:~/Proyecto/catalogador/catalyst/Ejemplo$ cat -n lib/Ejemplo/Controller/Items.pm
1 package Ejemplo::Controller::Items;
2
3 use strict;
4 use warnings;
5 use Data::Dumper;
6 use base qw/Catalyst::Controller::FormBuilder/;
7
..............................................
24
25 sub list : Local {
...................
36 }
37
38 sub edit : Local Form {
39 my ($self, $c, $id) = @_;
40
41 #Permite buscar un elemento para actualizar una entrada
42 my $item = $c->model('EjemploDB::Item')->find_or_new({ID => $id});
43 #Objeto para la creación de formularios
44 my $form = $self->formbuilder;
45 #Indicación del Template que renderiza el formulario
46 $c->stash->{template} = 'items/edit.tt2';
47
48 #Añadiendo el campo de selección de localización
49 $form->field(
50 name => 'lugar',
51 type => 'select',
52 options =>
53 [ map { [ $_->IDLOCALIZACION, $_->DESCRIPCION ] } $c->model('EjemploDB::Localizacion')->all ],
54 label => 'Localización del Item',
55 required => 1 #Inidca que el campo es obligatorio
56 );
57 #Campo para la selección de tipos de medios
58 $form->field(
59 name => 'tipo',
60 type => 'select',#Permite indicar el tipo Select en el Formulario
61 options =>
62 [ map { [ $_->IDTIPO, $_->DESCRIPCION ] } $c->model('EjemploDB::Tipo')->all ],
63 label => 'Tipo de Medio',
64 required => 1
65 );
66
67 #En caso de que no se indique un id el primer if permitirá crear una nueva entrada
68 if ($form->submitted && $form->validate) {
69 $c->stash->{message} = 'Prueba de Form';
70
71 my $id_info = $item->infos;
72 my $infos = $c->model('EjemploDB::Info')->find_or_new({DATOS => $form->field('info')});
73 $item->TITULO($form->field('title'));
74 #$item->LUGAR($form->field('lugar'));
75 #$item->add_to_lugar(
76 my $local = $c->model('EjemploDB::Localizacion')->find($form->field('lugar'));
77 $item->KIND($form->field('tipo'));
78 $infos->DATOS($form->field('info'));
79 $infos->update_or_insert;
80 my $nitem = $item->update_or_insert;
81 my $schema = $c->model('EjemploDB');
82 print Dumper($schema);
83 print "*************************************\n";
84 my $intermedia = $schema->resulset('Localizar');
85 print Dumper($intermedia);
86 $item->add_to_lugar ($intermedia->find($form->field('lugar')));
87 $item->add_to_item_info ({ID_INFO => $infos->IDINFO});
88 #$item->create_related ('item_info',{ID_INFO => $infos->IDINFO});
89 #Insertar Localización y Tipo
90 #$c->model('EjemploDB::Localizacion')->find($form->field('lugar'))->add_to_itemlugar({ID => $item->ID});
91 $c->forward('list');#Nos devuelve al listado
92 } else {
.....................
103 }
104 }
105 sub delete: Local {
.....................
112 }
.....................
124 1;
####
[debug] Applying HTML page layout wrappers to items/edit.tt2
[error] Caught exception in Ejemplo::Controller::Items->edit "Can't locate object method "resulset" via package "Ejemplo::Model::EjemploDB" at /home/davioth/Proyecto/catalogador/catalyst/Ejemplo/script/../lib/Ejemplo/Controller/Items.pm line 84."
[info] Request took 0.221216s (4.520/s)