oddworldng Posted January 2, 2015 Share Posted January 2, 2015 (edited) Hola, Estoy desarrollando un módulo para el backoffice en el cuál necesito que en el mismo fieldset del formulario añadir varios botones tipo submit (adjunto captura de lo que quiero). Cuando usas: $helper->submit_action = 'submit'; Capturas el submit con: if (Tools::isSubmit('submit')) { // Lo que quieras hacer } En mi caso tengo (un sólo botón tipo submit): 'submit' => array( 'title' => $this->l('Login'), 'class' => 'btn btn-default pull-left', ), Quisiera poder poner varios botones tipo submit y poder capturar por separado las acciones de cada uno mediante algún if. Nota: la captura pertenece al fichero /controllers/admin/AdminProductsController.php y éste código está hecho en html sin usar HelperForm. El código es el siguiente: $content .= ' <div class="panel-footer"> <a href="'.$this->context->link->getAdminLink('AdminProducts').'" class="btn btn-default"><i class="process-icon-cancel"></i> '.$this->l('Cancel').'</a> <button id="product_form_submit_btn" type="submit" name="submitAddproduct" class="btn btn-default pull-right"><i class="process-icon-save"></i> '.$this->l('Save') .'</button> <button id="product_form_submit_btn" type="submit" name="submitAddproductAndStay" class="btn btn-default pull-right"><i class="process-icon-save"></i> '.$this->l('Save and stay') .'</button> </div> </div>' ; Quiero hacer esto, pero en HelperForm con php y no insertando el código html del ejemplo. ¿Esto es posible? Un saludo, y gracias de antemano. Edited January 2, 2015 by oddworldng (see edit history) Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted January 2, 2015 Share Posted January 2, 2015 (edited) Mi entendimiento del idioma de Shakespeare no es muy bueno, buscando en Google, he encontrado esto: http://www.prestashop.com/forums/topic/357673-solved-multiple-submit-within-one-form-with-helper-form/ (Creo que es relaccionado) ¿Puedes comentarme que dicen en ese tema? Edito: Tambien he encontrado esto: http://stackoverflow.com/questions/25123742/prestashop-1-6-create-forms-with-more-than-1-submit-buttons Edited January 2, 2015 by Sergio Ruiz (see edit history) Link to comment Share on other sites More sharing options...
oddworldng Posted January 2, 2015 Author Share Posted January 2, 2015 (edited) Hola, El primer enlace dice que soluciona el problema especificando un nombre diferente para cada submit, pero esto no se puede hacer porque sobreescribe el último, en este caso mostraría el botón "Exit" solamente. 'submit' => array( 'title' => $this->l('Login'), 'class' => 'btn btn-default pull-left', 'title' => $this->l('Exit'), 'class' => 'btn btn-default pull-left' ), El segundo enlace es para crear múltiples fieldsets usando el mismo HelperForm, pero no es mi caso. Igualmente, gracias por tu ayuda. ¿Alguién tiene alguna otra idea de cómo solucionar esto? Gracias Edited January 2, 2015 by oddworldng (see edit history) Link to comment Share on other sites More sharing options...
oddworldng Posted January 2, 2015 Author Share Posted January 2, 2015 (edited) Lo he solucionado de una forma poco elegante, pero funciona. Vamos por partes: Primero. Creamos un HelperForm con un sólo submit y le "forzamos" a insertarle otro mediante este pequeño truco que se me ha ocurrido: 'submit' => array( 'title' => $this->l('Save') . $content, 'class' => 'btn btn-default pull-right', ), Prestar mucha atención a la concatenación de variables que hice: 'title' => $this->l('Save') . $content, Ahora vemos el código de $content: $content = ' <button id="exit" type="submit" name="exit" value="1" class="btn btn-default pull-right"><i class="process-icon-save"></i> '.$this->l('Exit') .'</button> '; Segundo. Con esto conseguimos insertar dos botones, pero falta lo importante: ¿Cómo sabemos cuándo presionamos ese botón?. Aquí les dejo la solución que se me ocurrió: if (Tools::isSubmit('submit')) { if ($_POST['exit'] == 1) // If you have pressed exit button { // Ha presionado el boton salir } else { // Ha presionado el botón por defecto en el HelperForm } } Sin duda no es la forma más elegante de resolver el problema, pero no he encontrado la solución en ningún otro foro. Un saludo, y espero que le sirva de ayuda a alguien Edited January 2, 2015 by oddworldng (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts