¿Cómo prevenir los problemas de instalación de extensión con la activación del modo de compilación

magento.stackexchange https://magento.stackexchange.com/questions/5118

Pregunta

Tengo la extensión que está escuchando caso core_layout_block_create_after. Podría ser cualquier evento que se disparaba en el administrador de Magento. También tengo instancia de Magento con activar el modo de compilador. He instalado la extensión a través de MagentoConnect. La instalación fue exitosa y la memoria caché se limpió. Ahora, después de regresar de nuevo a administrador voy a obtener el error:

Mage registry key "_singleton/extension/observer" already exists
 /var/www/magento/trunk/app/Mage.php(222): Mage::throwException('Mage registry k...')
 /var/www/magento/trunk/app/Mage.php(476): Mage::register('_singleton/exte...', false)
 /var/www/magento/trunk/includes/src/__default.php(21023): Mage::getSingleton('extension...')
 /var/www/magento/trunk/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('core_layout_blo...', Ar
ray)
 /var/www/magento/trunk/includes/src/__default.php(27297): Mage::dispatchEvent('core_layout_blo...', A
rray)
 /var/www/magento/trunk/includes/src/__default.php(27310): Mage_Core_Model_Layout->createBlock('adminh
tml/page', 'root')
 /var/www/magento/trunk/includes/src/__default.php(27077): Mage_Core_Model_Layout->addBlock('adminhtml
/page', 'root')
 /var/www/magento/trunk/includes/src/__default.php(27043): Mage_Core_Model_Layout->_generateBlock(Obje
ct(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
 /var/www/magento-demo/trunk/includes/src/__default.php(13507): Mage_Core_Model_Layout->generateBlocks()
 /var/www/magento/trunk/includes/src/__default.php(13432): Mage_Core_Controller_Varien_Action->generat
eLayoutBlocks()
 /var/www/magento/trunk/includes/src/Mage_Adminhtml_Controller_Action.php(275): Mage_Core_Controller_Varien_Action->loadLayout(NULL, true, true)
 /var/www/magento/trunk/app/code/core/Mage/Compiler/controllers/Adminhtml/Compiler/ProcessController.
php(59): Mage_Adminhtml_Controller_Action->loadLayout()
 /var/www/magento/trunk/includes/src/__default.php(13582): Mage_Compiler_Adminhtml_Compiler_ProcessController->indexAction()
 /var/www/magento/trunk/includes/src/__default.php(17927): Mage_Core_Controller_Varien_Action->dispatch('index')
 /var/www/magento/trunk/includes/src/__default.php(17484): Mage_Core_Controller_Varien_Router_Standar
d->match(Object(Mage_Core_Controller_Request_Http))
 /var/www/magento/trunk/includes/src/__default.php(20061): Mage_Core_Controller_Varien_Front->dispatch()
 /var/www/magento/trunk/app/Mage.php(683): Mage_Core_Model_App->run(Array)
 /var/www/magento/trunk/index.php(87): Mage::run('', 'store')
¿Fue útil?

Solución 3

Lo siento por responder tan tarde pero quiero describir cómo me fijo ese error. El problema fue que mi observador se adjunta en el área global de eventos core_layout_block_create_after, que se disparaba en ambas áreas (frontend, admin).

Después de la instalación durante el modo de caché habilitado Compilación fue limpiada. Pero el código no se recompilando durante la instalación. Esto significa que después de regresar de vuelta no pude acceso de administrador, y la compilación vuelva a ejecutar. Que podía hacer que sólo desde la consola.

A medida que necesitaba ver para ese evento sólo para el área de frontend Me acabo de mudar la inicialización observador. Y el problema fue corregido.

Mi consejo hacer observadores no inicializa en el ámbito global de eventos que se ejecuta en todas las páginas de administrador.

Otros consejos

La única manera que yo creo que es posible evitar sistemáticamente esta es apagar modo de compilación antes Instalación / hacer ningún cambio de código. También tendrá que volver a ejecutar el proceso de compilación después de la instalación. Simplemente volver a lo que le tendrá el mismo problema.

El problema de fondo es que con activar el modo de compilación Magento analiza los nuevos archivos config.xml pero sólo buscará clases incluye bajo la ruta /. Al instalar una nueva extensión de los nuevos archivos se colocan en los caminos estándar de Magento y no se encuentran por Magento.

Si la extensión eran para incluir los archivos en el estado compilado, así como el estado sin compilar esto podría ser una opción para prevenir esto. También las rutinas de instalación de SQL no son parte del estado compilado y podrían utilizarse para cambiar el php incluyen caminos (esto parece más bien hacker).

Considero que este comportamiento de un descuido en la implementación modo de compilación Magento - Opciones que habría tenido sentido son 1.) un cambio en el modo de configuración invalida compilaton 2.) de configuración también está compilado para tener un sitio coherente

Usted tendrá que volver a ejecutar el compilador a través del sistema> Herramientas> Compilación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top