Saya selalu memiliki tantangan dalam mengidentifikasi pegangan yang tepat untuk semuanya, jadi tolong tahan dengan saya di sini. Saya telah menjelajahi Google, SE, dan mencoba berbagai variasi, tanpa hasil. (Dan ya, saya telah menggunakan teknik di sini: Debugging Layout Loading , tetapi saya tidak yakin apa yang harus dilakukan dengan output.
Masalahnya: Kontroler memuat. Tata letak tidak.
Ketika saya mengunjungi halaman di localhost/magento/mymodule/ajax/cart
Ini bergema 'DI SINI!'. The var_dump dari getLayouts menghasilkan:
array(4) {
[0]=> string(17) "mymodule_ajax_cart"
[1]=> string(13) "STORE_default"
[2]=> string(24) "THEME_frontend_theme_theme"
[3]=> string(19) "customer_logged_out"
}
Kode
Pengontrol khusus:
app/code/local/mycompany/mymodule/controllers/AjaxController.php
class Mycompany_Mymodule_AjaxController extends Mage_Core_Controller_Front_Action
{
public function cartAction() {
echo 'HERE!';
$this->loadLayout('mymodule_ajax_cart');
var_dump($this->getLayout()->getUpdate()->getHandles());
$this->renderLayout();
}
}
File konfigurasi:
app/code/local/mycompany/mymodule/etc/config.xml
<config>
<modules>
<mycompany_mymodule>
<version>1.0.0</version>
</mycompany_mymodule>
</modules>
<global>
<helpers>
<mymodule>
<class>Mycompany_Mymodule_Helper</class>
</mymodule>
</helpers>
</global>
<frontend>
<routers>
<mymodule>
<use>standard</use>
<args>
<module>Mycompany_Mymodule</module>
<frontName>mymodule</frontName>
</args>
</mymodule>
</routers>
<layout>
<updates>
<mymodule>
<file>mymodule.xml</file>
</mymodule>
</updates>
</layout>
</frontend>
</config>
File tata letak di
app/design/frontent/base/default/layout/mymodule.xml
<?xml version="1.0"?>
<layout>
<mymodule_ajax>
<block type="core/text_list" name="content" output="toHtml" as="content" />
</mymodule_ajax>
<mymodule_ajax_cart>
<reference name="content">
<block type="core/template" template="mymodule/ajaxcart.phtml" />
</reference>
</mymodule_ajax_cart>
</layout>
Dan akhirnya, file templat di
app/design/frontend/theme/theme/template/mymodule/ajaxcart.phtml
<div style="border: 2px solid red">
Hello world
</div>
Mohon saran. Saya tahu saya kehilangan sesuatu yang jelas, tetapi seumur hidup saya tidak dapat menemukannya.
mycompany_mymodule
(pegangan pertama). Setiap tag xml yang memiliki awalan mymodule
tanpa mycompany_
awalan adalah IMHO buruk. Anda harus mengubah semua nama tag untuk memiliki awalan mycompany_
sebelumnya mymodule
.
mycompany_mymodule
awalan di setiap pegangan? (mycompany_mymodule_ajax
misalnya).