perenne Posted July 22, 2014 Share Posted July 22, 2014 Buenas a todos, Estoy liado con el desarrollo de un modulo en que necesito insertar registros en una tabla creada para este modulo. La tabla ya la tengo creada , hasta ahí todo correcto. El problema lo tengo en el adminController , tengo creada una clase que se supone muestra la plantilla y que recibe los datos escritos en el formulario. El problema es que no se como hacer que llegue al contruct del admincontroller. ¿alguien puede orientarme? Gracias Link to comment Share on other sites More sharing options...
jesa Posted July 23, 2014 Share Posted July 23, 2014 Para mostrar una pantalla con datos simplemente tendrás que registrar el módulo en un hook. No se muy bien lo que buscas para tener que tocar el adminController. Supongo que ya lo habrás ojeado, pero te paso el manual de desarrollador de prestashop con ejemplo para crear un módulo http://doc.prestashop.com/display/PS15/Creating+a+PrestaShop+module Link to comment Share on other sites More sharing options...
perenne Posted July 23, 2014 Author Share Posted July 23, 2014 Buenas Jesa, en primer lugar gracias por responder. El modulo esta asociado a un hook para mostrarlo en el front, ahora solo estoy con la administracion del contenido del modulo, es decir estoy haciendo los formularios para que el usuario meta datos. El modulo tiene una tabla , y de cada registro de esa tabla se pueden insertar elementos en otra tabla (asociada por id a la primera) De momento tengo listados los elementos de la primera tabla, ahora pretendo que se puedan insertar registros en la segunda tabla con un boton de insertar (por registro). No se de que manera mostrar el segundo formulario una vez que se le da a insertar. No se si me he explicado bien. Gracias de antemano por la ayuda Link to comment Share on other sites More sharing options...
jesa Posted July 23, 2014 Share Posted July 23, 2014 (edited) Creo que te he entendido... Tú estás desarrollando la parte de configuración del módulo en el BO. Al entrar te lista unos datos con un botón insertar cada uno. Yo lo que haría es poner dos listados, uno para los valores que se pueden insertar y otro para los insertados. Más que nada porque para el config se usa una sola pantalla. Seguramente se podrían poner más pero a lo mejor te complicas más la vida. En definitiva, cada vez que le das a insertar, te inserta el valor en la tabla y refrescas el tpl para que te aparezca en la segunda tabla el valor que acabas de insertar. Yo es como lo haría, si te fijas, los módulos no tienen varias pantallas, sobre la misma tienen pestañas o lo actualizan directamente. Espero que te sea de ayuda la explicación y que sea lo que estás buscando. Edited July 23, 2014 by jesa (see edit history) Link to comment Share on other sites More sharing options...
perenne Posted July 23, 2014 Author Share Posted July 23, 2014 Lo has entendido perfectamente, pero no veo la forma en la que lo propones, mas que nada para hacerlo facil en navegacion al usuario en cuanto a la configuracion del modulo. Como ejemplo el block cms, tenemos la lista de bloques de la izquierda en la que pondemos darle a modificar y el boton a añadir nuevo bloque. En mi caso añadir nuevo bloque iria a "otra pagina" en la que me permite insertar el registro nuevo y en mi caso el boton del modificar iria a la pagina que te lista las opciones y te permite añadir opciones. gracias Link to comment Share on other sites More sharing options...
jesa Posted July 23, 2014 Share Posted July 23, 2014 Efectivamente, justamente estaba tocando unas cosas de ese módulo y lo he visto. La verdad que tendría que estudiarlo para ver como lo hacen en ese módulo, pero lo más facil es que te cojas el módulo y lo vayas revisando para ver como lo hacen y reproducirlo. Link to comment Share on other sites More sharing options...
perenne Posted July 23, 2014 Author Share Posted July 23, 2014 en ese modulo añaden una clase que incluyen desde el principal del modulo. class BlockCMSModel extends ObjectModel Puedo entender esa logica pero creo que se sale de los standards de programacion de modulos en el 1.6., yo pensaba que tenia que introducir este tipo de cambios como extend admincontroller ... pero esta claro que estoy equivocado. Entonces ¿que clases y con que fin irian en /controller/admin? Esta claro que no he pillado "la convencion" sobre creacion de modulos administrables. Gracias de nuevo por tus respuestas. Link to comment Share on other sites More sharing options...
perenne Posted July 23, 2014 Author Share Posted July 23, 2014 (edited) estoy con las helper list para el listado y los botones de insertar, editar ... no se si voy bien por ahi, de momento no logro que haga el mas sencillo ... borrar un registro Que poca documentacion tenemos disponible para estos casos , ya no digo en español sino en ingles, la doc que viene es ... Es posible que busquen el que hagas cursos con los de prestashop, pero son carisimos. Edited July 23, 2014 by perenne (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted July 23, 2014 Share Posted July 23, 2014 Hay que tener en cuenta que esto es un cms para crear una tienda online. No es un cms que te ayuda a implementar lo que quieras... Es decir, te pone ya una tienda y unos standares para crear módulos, después ya es cosa nuestra saber php, smarty, jquery, etc para programar nuestras cosas. Hay cosas que te puedes ayudar de lo que ofrece presta y otras que mejor hacerlo a tu manera. Link to comment Share on other sites More sharing options...
perenne Posted July 24, 2014 Author Share Posted July 24, 2014 (edited) Estoy de acuerdo contigo, pero como prestashop "exige" unos estandares para la creacion de un modulo es por eso por lo que estaba pidiendo ayuda, En la documentacion da unos trazos, pero por ejemplo exige una estructura de directorios para los controllers y no encuentro demasiada documentacion al respecto. Ya he logrado listar los elementos de la tabla y los actions (edit, view, delete) , estos generan un enlace al modulo pasandole la accion p.e. la de accion de modificar un registro: http://desarrollo-prestashop/admin5061/index.php?controller=AdminModules&configure=mimodulo&id_question=1&token=dc4d395fdb8da93163e84e2b8c3eb33b&updateregistromimodulo Reedito porque acabo de ver algo: Recoge updateregistromimodulo por tools::issubmit creo que voy por buen camino, ahora voy a llamar a la funcion a ver.... a ver como inplemento ajax para que al borrar no tenga que recargarme la pagina ... Edited July 24, 2014 by perenne (see edit history) Link to comment Share on other sites More sharing options...
perenne Posted July 24, 2014 Author Share Posted July 24, 2014 (edited) creo que lo voy pillando, si hago una clase extend objectModel puedo llamar al metodo delete y eliminar el registro. (de momento me olvido del ajax) reedito: comrpobado ... funciona, ahora voy por la modificacion (que incluira la inserccion de los registros en la otra tabla .... ) ... se esta haciendo de rogar Edited July 24, 2014 by perenne (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted July 24, 2014 Share Posted July 24, 2014 Si, por ahí vas bien. Una cosa a tener en cuenta, no estoy seguro pero por lo que has comentado, creo que estás tocando los controller directamente. Eso no deberías hacerlo, tienes la carpeta override para sobreescribir los controller y las clases. Link to comment Share on other sites More sharing options...
perenne Posted July 24, 2014 Author Share Posted July 24, 2014 (edited) No toco el controler objectmodel en si , lo que hago es una clase que hace un extend del object model, asi puedo hacer uso de todos los metodos del objectmodel. lo he hecho asi dejandome llevar por el blockcms y el clockcmsinfo en los que definen una clase extend objecmodel en el raiz del modulo, de todos modos miro la documentacion del overrride (habia leido algo pero no le habia hecho mucho caso, ya que pensaba que era para modificar otra cosa) Edited July 24, 2014 by perenne (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted July 24, 2014 Share Posted July 24, 2014 Bueno, los override son para sobreescribir las clases del core de prestashop. Si tú lo que vas a crear son métodos nuevos pues también está bien como tú lo haces. De echo hasta te cubres las espaldas por si en algún momento otro módulo sobreescribe el override y te pisa tus cambios. Link to comment Share on other sites More sharing options...
perenne Posted July 24, 2014 Author Share Posted July 24, 2014 si, pretendo aprovechar todos los metodos que ya estan creados y ampliar los que a mi me hagan falta. Por ejemplo, al borrar un registro necesito que se borren los registros de la otra tabla que tiene el id relacionado, paa ello he reescrito el metodo delete, en el que hago esto: public function delete() { $hijosaborrar = Db::getInstance()->delete('tabla_hijos','condicion'); return parent::delete(); } Link to comment Share on other sites More sharing options...
perenne Posted July 24, 2014 Author Share Posted July 24, 2014 avanzando ... jejeje ya edito los registros de la primera tabla y muestro la lista con los "hijos" de modo que pueda cambiar datos de la primera tabla y insertar/editar/borrar a los "hijos". Despues a por el front-end ... bufff Link to comment Share on other sites More sharing options...
perenne Posted July 25, 2014 Author Share Posted July 25, 2014 de momento la cosa va. Tengo un pequeño problema con los idiomas. Ya logro insertar registros sin problema, ahora me surge una duda. Si el usuario tiene varios idiomas y no pone expresamente la traduccion (a traves del desplegable de idiomas como hace cmsinfo) cuando voy a insertar el registro, evidentemente al no tener valores me inserta los idiomas vacios. A ver como lo soluciono. Link to comment Share on other sites More sharing options...
jesa Posted July 25, 2014 Share Posted July 25, 2014 de momento la cosa va. Tengo un pequeño problema con los idiomas. Ya logro insertar registros sin problema, ahora me surge una duda. Si el usuario tiene varios idiomas y no pone expresamente la traduccion (a traves del desplegable de idiomas como hace cmsinfo) cuando voy a insertar el registro, evidentemente al no tener valores me inserta los idiomas vacios. A ver como lo soluciono. Lo que puedes hacer es meter en todos los idiomas que se queden vacíos la traducción que se ha metido en alguno de los idiomas. Así es como lo hace prestashop por defecto y es aconsejable eliminar los idiomas que no usamos porque sin hacer nada nos llena de basura la bbdd. Link to comment Share on other sites More sharing options...
perenne Posted July 28, 2014 Author Share Posted July 28, 2014 (edited) Gracias Jesa, Lo he logrado, con las funciones de validacion de idiomas: if ($valor->validateFields(false) && $valor->validateFieldsLang(false)) { $valor->save(); Ya inserta todos los idiomas aunque los dejes vacios. Ya tengo la lista de la primera tabla con los idiomas, hasta ahi todo correcto. De vueltas a como hacer facil para el usuario el añadir "hijos" a los registros de esa tabla me encuentro con varias posibilidades: !ª Podria añadir una accion al helperlist para añadir registros , pero me encuentro con que no se como añadir una bulk action. 2ª Una vez insertado el registro de la primera tabla y al darle a modificar que sea ahi donde se pueden añadir elementos, esta opcion no la veo muy clara para hacerlo facil en la navegacion. ¿opiniones? Gracias Edited July 28, 2014 by perenne (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts