カスタムブロックがあり、2つの別々のブロックに分割しようとしています。
これが私のフォルダ構造です(app / code / local / MyNamespace / CustomerDashboard上):
このモジュールの機能を2つの小さな部分に分割したいので、ファイルMyMenu.php
をブロックフォルダーとMyMenuController.php
コントローラーに追加しました。
次に、コードをコピー/貼り付けしDeliverydetails.php
てMyMenu.php
、機能DeliverydetailsController.php
するMyMenuController.php
かどうかを確認しました。
私は自分のlocal.xmlに入って、モジュールとテンプレートへの参照を追加しました:
<reference name="left">
<block type="customerdashboard/mymenu" name="customerdashboard.mymenu" template="customer/form/my-menu.phtml"/>
</reference>
コンテンツが表示されるはずのページにアクセスすると、モジュールが表示されるはずの場所に何もありませんが、exceptions.logを確認したところ、次のことがわかりました。
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}
私はすでに述べた2つのファイルを除いて、config.xmlや他の何にも触れませんでした(そして、この特定のブロックで不要な機能を削除するためだけに)これは私のconfig.xmlです。
<?xml version="1.0"?>
<config>
<modules>
<MyNamespace_CustomerDashboard>
<version>0.1.1</version>
</MyNamespace_CustomerDashboard>
</modules>
<global>
<helpers>
<customerdashboard>
<class>MyNamespace_CustomerDashboard_Helper</class>
</customerdashboard>
</helpers>
<blocks>
<customerdashboard>
<class>MyNamespace_CustomerDashboard_Block</class>
</customerdashboard>
</blocks>
<sales>
<order>
<states>
<invoiced translate="label">
<label>Invoiced</label>
<statuses>
<invoced default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</invoiced>
</states>
</order>
</sales>
</global>
<frontend>
<routers>
<customerdashboard>
<use>standard</use>
<args>
<module>MyNamespace_CustomerDashboard</module>
<frontName>customerdashboard</frontName>
</args>
</customerdashboard>
</routers>
</frontend>
</config>
StackExchangeでこの問題に関する他のスレッドを読みましたが、何が問題であるかを知る手掛かりがありませんでした。
では、ブロックをレンダリングできず、exceptions.logでそのエラーが発生するのはなぜですか。また、私はMagento newbです。