2010-07-23 26 views
8

¿cómo puedo redirigir a una página en particular después de que el usuario envía el formulario de contacto en Magento? form.phtml tieneredirigir a una página en particular después de enviar el formulario de contacto en Magento

<form action="<?php echo Mage::getUrl(); ?>contacts/index/post/" id="contactForm" method="post"> 

pero no estoy seguro de dónde encontrar el archivo PHP que controla el envío de correo electrónico y redirecciones. ¿algunas ideas? gracias

EDIT: encontrado esto en IndexController.php bajo APP>> código de núcleo> Mago> Contactos> controladores

$this->_redirect('*/*/'); 

Respuesta

2

IndexController.php bajo APP>> código de núcleo> Mago> Contactos> controladores

cambió

$this->_redirect('*/*/'); 

a

$this->_redirect(''); 

y redirige a la página de inicio ahora.

+11

Para aquellos de ustedes viendo esto, ¡por favor no hagan cambios en el núcleo! No editar este archivo. – sanbornm

+5

Mala práctica. No cambie los archivos centrales. –

+0

Entonces, ¿qué sugieres que hagamos? Estoy usando Contáctenos en una Página de CMS como un Bloque. –

14

Sé que es respondida, solo compartiendo mi experiencia. He hecho un formulario de contacto a través de una página de CMS. La forma funcionó bien. Pero después de enviarlo, se redirigiría al formulario de contacto magento. Para redirigir de nuevo a la página de CMS, que tenía que poner

$this->_redirect('contactus'); 

donde contactus es el identificador de URL.

También después de la redirección, el mensaje de éxito/error no se muestra. Para eso tuve que hacer cambios aquí.

Ir a /app/design/frontend/default/yourstore/template/contacts/form.phtml

<div id="messages_product_view"> 
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?> 
</div> 

con:

<?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?> 

Tengo la solución de here

+0

gracias por compartir – pixeltocode

+0

"¡yo también! ¡Gracias!" –

+1

@noobcode ¿Dónde pones la línea '$ this -> _ redirigir ('contactus');'? Gracias. – shnozolla

3

También podría crear una redirección url personalizada.

trayectoria

ID - contactos/índice solicitud de surco - contactos/índice ruta de destino - 'redirigir url'

2

Para evitar sobrescribir los archivos principales y actualización de compatibilidad de daño, que sobrecargan el controlador como se describe aquí: Tutorial: Overload a controller

<frontend> 
    <routers> 
     <contacts> 
      <args> 
       <modules> 
        <My_Module_Contacts before="Mage_Contacts">My_Module_Contacts</My_Module_Contacts> 
       </modules> 
      </args> 
     </contacts> 
    </routers> 
</frontend> 

y reescribió $this->_redirect('*/*/') a $this->_redirectReferer('contacts/index'), por lo que redirecciona a la página anterior, y si no se estableció ningún árbitro, a/contactos/índice por si falla.

También he cambiado de forma.phtml de

<div id="messages_product_view"> 
    <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?> 
</div> 

a

<div id="messages_product_view"> 
    <?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?> 
    <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?> 
</div> 

para mostrar los mensajes de error.

-1

La solución combinada se da en ambas respuestas de @Simon y los otros

  • cambio $this->_redirect('*/*/') todas partes en app/code/core/Mage/Contacts/controllers/IndexController.php a $this->_redirectReferer();
  • y actualizar la forma phtml para incluir el mensaje de error/éxito editando app/design/frontend/base/default/template/contacts/form.phtml y añadiendo la línea <?php Mage::app()->getLayout()->getMessagesBlock()->setMessages(Mage::getSingleton('customer/session')->getMessages(true)); ?> en messages_product_view

mejor para copiar los archivos a 'local'

+0

Copiar los archivos a 'local' es mejor que editar directamente en' core', pero aún no es una buena práctica, que es reescribir el archivo del controlador en un módulo personalizado y realizar los cambios allí.De esta forma, cuando sea el momento de actualizar, solo tendrá que comparar 'postAction' con la versión actualizada, en lugar de todo el archivo del Controlador. – pcronin

4

para la siguiente persona

  1. ir a software de seda y crear un nuevo módulo utilizando su creador módulo http://www.silksoftware.com/magento-module-creator/
  2. Introduzca su nombre de la empresa y el nombre del módulo
  3. A continuación, cambie "¿Necesita reescribir Magento Clase" a Sí
  4. haga clic en "Agregar clase" el nombre de clase será Mage_Contacts_IndexController
  5. Esto creará un módulo con todo lo que necesita
  6. Añadir el método postAction del Core Controller a su controlador recién creado
  7. continuación, cambiar la redirección a redirectReferer() al final del método postAction

El creador módulo creará todo lo necesario para sobrecargar el Controlador de contactos y ahorra tiempo de errores de resolución de problemas. Además, evite los problemas en el camino de editar los archivos principales directamente.

¡NO EDITAR LOS ARCHIVOS PRINCIPALES!

Cuestiones relacionadas