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;