J'ai toujours du mal à identifier les poignées appropriées pour tout, alors soyez indulgent avec moi ici. J'ai parcouru Google, SE et essayé une myriade de variantes, sans succès. (Et oui, j'ai utilisé des techniques ici: débogage du chargement de mise en page , mais je ne sais pas quoi faire avec la sortie.
Le problème: le contrôleur se charge. La mise en page ne fonctionne pas.
Quand je visite la page à localhost/magento/mymodule/ajax/cart
Il fait écho «ICI!». Le var_dump des getLayouts génère:
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"
}
Le code
Contrôleur personnalisé:
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();
}
}
Fichier de configuration:
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>
Fichier de mise en page à
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>
Et enfin, le fichier modèle à
app/design/frontend/theme/theme/template/mymodule/ajaxcart.phtml
<div style="border: 2px solid red">
Hello world
</div>
S'il vous plaît donnez votre avis. Je sais que je manque quelque chose d'évident, mais je ne peux pas le trouver pour la vie.
mycompany_mymodule
(première poignée). Chaque balise xml qui a le préfixe mymodule
sans le mycompany_
préfixe est mauvaise à mon humble avis. Vous devez modifier tous les noms de balises pour avoir le préfixe mycompany_
avant mymodule
.
mycompany_mymodule
préfixe dans chaque poignée? (mycompany_mymodule_ajax
par exemple).