Domanda

Ho un blocco personalizzato che ora sto cercando di entrare in due blocchi sepparati.

Ecco la mia struttura di cartelle (su app / codice / locale / mynamespace / customerboard):

Inserisci Descrizione dell'immagine qui

Poiché voglio rompere le funzioni di questo modulo in due parti più piccole ho aggiunto i file MyMenu.php sulla cartella di blocco e MyMenuController.php in controller.

Allora, ho appena copiato / incollato il codice da Deliverydetails.php in MyMenu.php e DeliverydetailsController.phpinto MyMenuController.phpStagCode solo per vedere se funzionerebbe.

Sono andato nel mio locale.xml e ha aggiunto il riferimento al mio modulo ed è il modello:

<reference name="left">
        <block type="customerdashboard/mymenu" name="customerdashboard.mymenu" template="customer/form/my-menu.phtml"/>
    </reference>
.

Quando accedo alla pagina in cui dovrei vedere il contenuto, non c'è nulla nel luogo in cui dovrebbe essere il modulo, ma sono andato a controllare le eccezioni.log e ho trovato questo:

exception 'Mage_Core_Exception' with message 'Invalid block type: MyNamespace_CustomerDashboard_Block_Mymenu' in /var/www/html/mysite/public_html/app/Mage.php:595
Stack trace:
#0 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block type...')
#1 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('customerdashboa...', Array)
#2 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('customerdashboa...', 'customerdashboa...')
#3 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('customerdashboa...', 'customerdashboa...')
#4 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#5 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#7 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(269): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#8 /var/www/html/mysite/public_html/app/code/core/Mage/Customer/controllers/AccountController.php(107): Mage_Core_Controller_Varien_Action->loadLayout()
#9 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Customer_AccountController->indexAction()
#10 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#11 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#12 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#13 /var/www/html/mysite/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#14 /var/www/html/mysite/public_html/index.php(93): Mage::run('', 'store')
#15 {main}
.

Non ho toccato il mio config.xml né nient'altro da parte dei due file che ho già menzionato (e solo per rimuovere la funzionalità non volevo in questo particolare blocco) e questo è il mio config.xml: Ho letto altri thread su questa questione qui su Stackexchange ma non ho avuto indizi per quello che potrebbe essere il problema.

Allora, cosa sto facendo male che non riesco a ottenere il mio blocco per rendere e sto ottenendo quell'errore sulle mie eccezioni. Inoltre, sono un magento newb.

È stato utile?

Soluzione

Come in quanto Magento, il nome file/folder dopo Block,Model,Helper folder dovrebbe essere start with Uppercase e solo contain one uppercase for each folder and files.

Secondo magento il nome del file è Mymenu anziché MyMenu.

Nome della classe dovrebbe essere MyNamespace_CustomerDashboard_Block_Mymenu

Altri suggerimenti

Il tuo errore dice, non può trovare il blocco MyNamespace_CustomerDashboard_Block_Mymenu.Secondo questo suggerimento, la tua classe di blocco dovrebbe essere a app\code\local\MyNamespace\CustomerDashboard\Block\Mymenu.php.Si prega di notare che hai MyMenu.php.Dovrebbe essere Mymenu.php.Inoltre è necessario assicurarsi che il nome della classe sia MyNamespace_CustomerDashboard_Block_Mymenu.

o

È possibile evitare questo errore semplicemente modificando l'aggiornamento del local.xml.Dovrebbe sembrare così.

<reference name="left">
    <block type="customerdashboard/myMenu" name="customerdashboard.mymenu" template="customer/form/my-menu.phtml"/>
</reference>
.

Vedi il tipo ora che stiamo usando.È customerdashboard/myMenu invece di customerdashboard/mymenu.Ora questo tipo si riferisce alla classe Block MyNamespace_CustomerDashboard_Block_MyMenu.In questo modo il tuo blocco sarà ricompensato da magento e il problema risolverà

Nota: non dimenticare di cancellare la cache.

In alcuni casi (Magento 1.9), se abbiamo dimenticato di utilizzare la funzione di costruzione nel file PHP Block, quindi inserirlo e il problema sarà riparato:

 protected function _construct()
    {
        parent::_construct();
    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top